编写一个打印字符串' bob'的程序。发生在s?其中s是预定义的

时间:2015-06-22 04:28:46

标签: python

我试着为此编写代码。但它只给了我几次正确的回答“bob'不会同时来......

代码: print s.count(' bob')

3 个答案:

答案 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建议。