1

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

方法はありますか?それとも、この種のことについては、別の方法で行う必要がありますか?

4

4 に答える 4

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()します。これは、インデックス値を提供しながら文字列を反復処理します。(インデックスの開始番号を指定する 2 番目の引数があります)

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

PSstr -変数名として使用しないでください。組み込み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 に答える