4

文字列とそのインデックスからすべてのパターンオカレンスを取得するためのpythonianまたは簡単な方法はありますか?私はそれを行うメソッドを書くことができます、私は超短いワンライナーか何かがあるかどうか疑問に思っています:)

4

1 に答える 1

16

救助するPythonreモジュール。

>>> import re
>>> [x.start() for x in re.finditer('foo', 'foo foo foo foo')]
[0, 4, 8, 12]

re.finditerジェネレータを返します。これは、リスト内包表記を使用する代わりに、for-loopメモリ効率の高いで使用できることを意味します。

これを拡張して、指定されたテキストのパターンのスパンを取得できます。つまり、開始インデックスと終了インデックスです。

>>> [x.span() for x in re.finditer('foo', 'foo foo foo foo')]
[(0, 3), (4, 7), (8, 11), (12, 15)]

Pythonは素晴らしいではありません:)XKCDの引用、反対票、または反対票なしの引用を止めることはできませでした...

ここに画像の説明を入力してください

于 2013-03-24T14:37:50.957 に答える