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
方法はありますか?それとも、この種のことについては、別の方法で行う必要がありますか?
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
方法はありますか?それとも、この種のことについては、別の方法で行う必要がありますか?
インデックスを見つける以外にループで何かをする必要がない限り、次を使用します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()
します。これは、インデックス値を提供しながら文字列を反復処理します。(インデックスの開始番号を指定する 2 番目の引数があります)
>>> string = "I am a <token>"
>>> for index, element in enumerate(string):
if element == '<':
print index
7
PSstr
-変数名として使用しないでください。組み込みstr
型をシャドウします。
使用enumerate
:
for idx, ch in enumerate(some_string):
print ch, 'is at index', idx