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
有办法吗?或者对于这种事情我应该以不同的方式做吗?
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
有办法吗?或者对于这种事情我应该以不同的方式做吗?
>>> for i, ch in enumerate(str):
print i, ch
Would print
0 I
1
2 a
...
使用变量名时也应该小心,str
因为这是内置类型的名称。
除非你需要在循环中做一些事情,除了找到索引之外,只需使用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'
在这里使用enumerate()
。这将在为您提供索引值的同时遍历字符串。(第二个参数给出了索引的起始编号)
>>> string = "I am a <token>"
>>> for index, element in enumerate(string):
if element == '<':
print index
7
PS - 不要str
用作变量名。它隐藏了内置str
类型。
使用enumerate
:
for idx, ch in enumerate(some_string):
print ch, 'is at index', idx