Python“for c in string”习惯用法很好但有时你可能会检查并发现你需要将一段字符串传递给函数。
所以例如
str = "I am a <token>"
for ch in str:
if ch == '<':
# I need to know where in string we are now
有办法吗?或者对于这种事情,我应该采用不同的方式吗?
答案 0 :(得分:5)
>>> for i, ch in enumerate(str):
print i, ch
Would print
0 I
1
2 a
...
使用str
作为变量名称时也应该小心,因为这是内置类型的名称。
答案 1 :(得分: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'
答案 2 :(得分:2)
在此处使用enumerate()
。这将迭代字符串,同时为您提供索引值。 (还有第二个参数给出了索引的起始编号)
>>> string = "I am a <token>"
>>> for index, element in enumerate(string):
if element == '<':
print index
7
P.S - 请勿将str
用作变量名称。它会隐藏内置str
类型。
答案 3 :(得分:1)
使用enumerate
:
for idx, ch in enumerate(some_string):
print ch, 'is at index', idx