Python 有 string.find()
和 string.rfind()
来获取字符串中子字符串的索引。
我想知道是否有类似 string.find_all()
的东西可以返回所有找到的索引(不仅是从头开始的第一个或从结尾开始的第一个)。
例如:
string = "test test test test"
print string.find('test') # 0
print string.rfind('test') # 15
#this is the goal
print string.find_all('test') # [0,5,10,15]
要 计算 出现次数,请参阅 计算字符串中子字符串的出现次数。
原文由 nukl 发布,翻译遵循 CC BY-SA 4.0 许可协议
没有简单的内置字符串函数可以满足您的需求,但您可以使用更强大的 正则表达式:
如果你想找到重叠的匹配项, lookahead 会这样做:
如果你想要一个没有重叠的反向查找,你可以将积极和消极的前瞻组合成这样的表达式:
re.finditer
返回一个 生成器,因此您可以将上面的[]
更改为()
以获得一个生成器而不是一个列表更高效只对结果进行一次迭代。