1

Python 的“for c in string”习语很好,但有时您可能会检查并发现您需要将一段字符串 say 传递给函数。

所以例如

str = "I am a <token>"
for ch in str:
    if ch == '<':
       # I need to know where in string we are now

有办法吗?或者对于这种事情我应该以不同的方式做吗?

4

4 回答 4

5
>>> for i, ch in enumerate(str):
        print i, ch

Would print

0 I
1 
2 a
...

使用变量名时也应该小心,str因为这是内置类型的名称。

于 2013-07-19T17:29:28.983 回答
4

除非你需要在循环中做一些事情,除了找到索引之外,只需使用find

>>> "I am a <token>".find('<')
7
>>> s = "I am a <token>"
>>> s[s.find('<'):s.find('>')+1]
'<token>'
>>> s[s.find('<')+1:s.find('>')]
'token'
于 2013-07-19T17:53:15.480 回答
2

在这里使用enumerate()。这将在为您提供索引值的同时遍历字符串。(第二个参数给出了索引的起始编号)

>>> string = "I am a <token>"
>>> for index, element in enumerate(string):
        if element == '<':
            print index     
7

PS - 不要str用作变量名。它隐藏了内置str类型。

于 2013-07-19T17:28:58.187 回答
1

使用enumerate

for idx, ch in enumerate(some_string):
    print ch, 'is at index', idx
于 2013-07-19T17:28:56.797 回答