是否有一个Python或速记方法从字符串及其索引中获取所有模式发生?我可以写一个方法来实现它,我只是想知道是否有一个超短的一行程序或其他东西:)
最佳答案
pythonre
模块。
>>> 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,这样会更节省内存。您可以扩展它以获得给定文本中模式的范围。即开始和结束索引。
>>> [x.span() for x in re.finditer('foo', 'foo foo foo foo')]
[(0, 3), (4, 7), (8, 11), (12, 15)]
python不是很棒吗:)无法阻止自己引用XKCD,否决票还是不否决票…