我试图找到'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?
根据文档,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)
| 归档时间: |
|
| 查看次数: |
3871 次 |
| 最近记录: |