我试着为此编写代码。但它只给了我几次正确的回答“bob'不会同时来......
代码: print s.count(' bob')
答案 0 :(得分:4)
在正则表达式中使用lookahead来查找重叠的出现次数
import re
len(re.findall('(?=bob)',s))
答案 1 :(得分:3)
这个可以简单如下:
from re import findall
len(findall("(?=bob)", s))
示例(S)强>:
>>> from re import findall
>>> s = "Helo bob; I'm bob"
>>> len(findall("(?=bob)", s))
2
>>> s = "Hello Fred!"
>>> len(findall("(?=bob)", s))
0
>>> s = "bobbobboul"
>>> len(findall("(?=bob)", s))
2
>>> len(findall("(?=bob)", s))
2
答案 2 :(得分:2)
为了统计重叠的子字符串,您必须实现一个辅助功能(string.count
不会为您做到这一点):
def count(string, sub):
counter = 0
while sub in string:
counter += 1
index = string.index(sub)
string = string[index+1:]
return counter
print count("bobob", "bob") # 2
另一种选择是使用正则表达式,因为Pruthvi Raj建议。