如何使用python计算字符串中所有出现的单词

tbu*_*151 3 python python-2.7

我试图找到'bob'出现在'abdebobdfhbobob'等字符串中的次数.

我的代码(我通过另一个stackoverflow问题找到)是:

s = 'abdebobdfhbobob'  
print 'The number of times bob occurs is: ' + str(s.count('bob'))
Run Code Online (Sandbox Code Playgroud)

这段代码打印出来:bob出现的次数是:2这对我需要的不正确,因为答案应该是3.

问题是这个代码不将'abdebobdfh bobob '算作两个不同的bob,这就是我想要的.

如何修复代码以将字符串的bobob部分计为两个单独的bob?

Kas*_*mvd 6

根据文档,str.count()返回范围内子串sub的非重叠出现次数[start, end].您可以使用基于正向表达式的正向表达式来查找重叠的字符串:

>>> import re
>>> s = 'abdebobdfhbobob'
>>> len(re.findall(r'(?=bob)', s))
3
Run Code Online (Sandbox Code Playgroud)

如果你不想使用正则表达式,你可以在sum()函数中使用一个生成器表达式,它将遍历长度为3的所有子字符串,并计算那些等于'bob'的子字符串的数量:

>>> sum(s[i:i+3] == 'bob' for i in range(len(s)-2))
3
Run Code Online (Sandbox Code Playgroud)