Python 编写一个程序,打印字符串包含子字符串的次数

Python 编写一个程序,打印字符串包含子字符串的次数,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我想数一数字符串s中有多少个BOB,如果这给了我17个 我的代码有什么问题吗?我是python新手。当你在字符串上循环时,一次性变量将保存字符,因此在你的循环中,x永远不等于bob 如果要计算非重叠字符串,只需使用str.count: s = "bobobobobobsdfsdfbob" count = 0 for x in s : if x == "bob" : count += 1 print count 对于重叠的子字符串,可以在正则表达式中使用lookaro

我想数一数字符串s中有多少个BOB,如果这给了我17个
我的代码有什么问题吗?我是python新手。

当你在字符串上循环时,一次性变量将保存字符,因此在你的循环中,
x
永远不等于
bob

如果要计算非重叠字符串,只需使用
str.count

s = "bobobobobobsdfsdfbob"
count = 0 
for x in s : 
    if x == "bob" : 
       count += 1
print count
对于重叠的子字符串,可以在正则表达式中使用lookaround:

In [52]: s.count('bob')
Out[52]: 4

在字符串上循环时,throwaway变量将保存字符,因此循环中的
x
永远不等于
bob

如果要计算非重叠字符串,只需使用
str.count

s = "bobobobobobsdfsdfbob"
count = 0 
for x in s : 
    if x == "bob" : 
       count += 1
print count
对于重叠的子字符串,可以在正则表达式中使用lookaround:

In [52]: s.count('bob')
Out[52]: 4

您可以使用string.count

例如:

In [57]: import re

In [59]: len(re.findall(r'(?=bob)', s))
Out[59]: 6

您可以使用string.count

例如:

In [57]: import re

In [59]: len(re.findall(r'(?=bob)', s))
Out[59]: 6

我并没有给出最好的解决方案,只是试图更正您的代码

了解
在您的情况下对每个(又称范围)所做的事情

s = "bobobobobobsdfsdfbob"
count = s.count("bob")
print(count)
产出:

for c in "Hello":
    print c  
在每次迭代中,您将一个字符与一个字符串进行比较,这将导致错误的答案。
尝试类似于
(无重叠,即无跨度)

输出:

Count=6

我没有给出最好的解决方案,只是试图更正您的代码

了解
在您的情况下对每个(又称范围)所做的事情

s = "bobobobobobsdfsdfbob"
count = s.count("bob")
print(count)
产出:

for c in "Hello":
    print c  
在每次迭代中,您将一个字符与一个字符串进行比较,这将导致错误的答案。
尝试类似于
(无重叠,即无跨度)

输出:

Count=6

我没有得到答案
17
,我在Python2.x中得到了
0
。在Python3.x中,我得到了一个错误,可以通过使用
print(count)
而不是
print count
来更正。请确保您的代码运行,并确保您正在告诉我们实际问题。对于您给出的字符串,您希望得到什么样的答案?对于像
bobobob
这样的较短字符串,您期望的答案是什么?可能重复的可能重复的我没有得到答案
17
,我在python 2.x中得到
0
。在Python3.x中,我得到了一个错误,可以通过使用
print(count)
而不是
print count
来更正。请确保您的代码运行,并确保您正在告诉我们实际问题。对于您给出的字符串,您希望得到什么样的答案?对于较短的字符串(如
bobob
),您希望得到什么样的答案?如果子字符串完全分开,则只计算子字符串的可能重复。这取决于
bobob
是否应返回1或2。@merlinpatt是的,这是另一个问题,请查看更新以获得一个解决方案。这仅计算完全分开的子字符串。这取决于
bobob
是否应返回1或2。@merlinpatt是的,这是另一个问题,请查看更新以获得一个解决方案。