2015-10-05 205 views
3

我希望能夠挑出字符串中的某些字母,但需要能夠獲得多個位置,而不僅僅是第一個(Python)。目前,我有這樣的代碼:如何在多個字符串中查找字符串中的某些字母?

word=apple #just and example 
character=input("Take a guess") 
if character == "a": 
    place=word.find("a") 
elif character == "b": 
    place=word.find("b") 
elif character == "c": 
    place=word.find("c") 
elif character == "d": 
    place=word.find("d") 
elif character == "e": 
    place=word.find("e") 
elif character == "f": 
    place=word.find("f") 
elif character == "g": 
    place=word.find("g") 
elif character == "h": 
    place=word.find("h") 
elif character == "i": 
    place=word.find("i") 
elif character == "j": 
    place=word.find("j") 
elif character == "k": 
    place=word.find("k") 
elif character == "l": 
    place=word.find("l") 
elif character == "m": 
    place=word.find("m") 
elif character == "n": 
    place=word.find("n") 
elif character == "o": 
    place=word.find("o") 
elif character == "p": 
    place=word.find("p") 
elif character == "q": 
    place=word.find("q") 
elif character == "r": 
    place=word.find("r") 
elif character == "s": 
    place=word.find("s") 
elif character == "t": 
    place=word.find("t") 
elif character == "u": 
    place=word.find("u") 
elif character == "v": 
    place=word.find("v") 
elif character == "x": 
    place=word.find("w") 
elif character == "w": 
    place=word.find("x") 
elif character == "y": 
    place=word.find("y") 
else: 
    place=word.find("z") 

這工作找到一個字母的地方,但如果我想找到雙方普的這是行不通的,它會只告訴我第一的位置。所以我真正想知道的是,如果有一些循環可以讓我找到字母並將它們設置爲兩個不同的變量,比如「place」和「place2」,或者我必須有多次不同的次數爲每個單獨的起點。

+1

首先,只要使用'地方= word.find(人物)'。這將節省大量的代碼。此外,你缺少''蘋果「'周圍的引號。 – brandaemon

+0

對不起,我在正確的代碼中沒有錯,只是沒有複製和粘貼前兩行。而我並沒有想到在那裏使用字符變量。謝謝! –

+0

可能重複的[python - 查找字符串中的字符串 - 我可以得到所有索引?](http://stackoverflow.com/questions/11122291/python-find-char-in-string-can-i-get-all-索引) – VPfB

回答

3

您可以使用re.finditer()得到串的所有出現:

>>> import re 

>>> word = "apple" #just and example 
>>> character = input("Take a guess: ") 
>>> for occurrence in re.finditer(character, word): 
...  print('character: {}, {}'.format(character, occurrence.start())) 
1

正則表達式是一個強大的工具。但是,使用正則表達式進行簡單的字符串文字搜索會產生相當大的開銷。

下面是一個簡單的替代一邊喊str.find,直到所有事件被發現:

所有的
def findall(mainstring, substring): 
    pos = -1 
    while True: 
     pos = mainstring.find(substring, pos+1) 
     if pos == -1: 
      break 
     yield pos 

for occurence in findall("apple", "p"): 
    print(occurence) 
# prints: 1 2 
相關問題