如何在while循环中使用索引,每次循环找到下一个匹配项

时间:2016-07-31 15:20:00

标签: python string python-3.x indexing

我想在一个字符串中找到一个字母的索引然后替换相同索引中的字母但在另一个字符串中,这两个字符串都是字典的成员。

但是如果字符串中出现多个charStr(单个字符),它将只给出第一次出现的索引。我如何设置它以便循环然后给出下一次出现的字符的索引而不是每次循环运行时的第一次出现?

对不起,如果这没有意义,解释大声笑有点复杂,提前感谢任何帮助!

1 个答案:

答案 0 :(得分:4)

index()方法接受第二个参数,指定开始搜索的位置。

'abcbd'.index('b') # 1
'abcbd'.index('b', 1) # 1
'abcbd'.index('b', 2) # 3
'abcbd'.index('b', 3) # 3

因此,在每次迭代时,您都可以使用pos = x('secWord').index(charStr, pos+1)。但是,如果子字符串不在字符串中,则会引发ValueError:

'abcbd'.index('b', 4) # ValueError: substring not found

例如:

astr = 'abcdbfrgbzb'
charStr = 'b'
occ = astr.count(charStr)
pos = -1
for _ in range(occ):
    pos = astr.index(charStr, pos+1)
    print pos
# 1, 4, 8, 10

在你的情况下:

def updateGame (x, charStr) :
    occ = x('secWord').count(charStr)
    pos = -1
    for _ in range(occ):
        pos = x('secWord').index(charStr, pos+1)
        x('curGuess')[pos] = charStr