是否有pythonian或简写方法从字符串及其索引中获取所有模式的出现?我可以写一个方法来做到这一点,我只是想知道是否有一个超短的单行或其他东西:)
答案 0 :(得分:14)
python re
模块救援。
>>> import re
>>> [x.start() for x in re.finditer('foo', 'foo foo foo foo')]
[0, 4, 8, 12]
re.finditer
会返回generator,这意味着您可以在for-loop
中使用list-comprehensions,而不是使用XKCD,这样可以提高内存效率。
您可以对此进行扩展,以获得给定文本中模式的范围。即开始和结束指数。
>>> [x.span() for x in re.finditer('foo', 'foo foo foo foo')]
[(0, 3), (4, 7), (8, 11), (12, 15)]
不是Python真棒:)不能阻止自己引用{{3}},downvotes或没有downvotes ......