使用Python 2.7,我试图计算短语'bobbbobobboobobookobobbobbboj'中'bob'的出现次数。为此,我编写了以下代码:
b=0
string='bobbbobobboobobookobobbobbboj'
string = string.lower()
for i in string:
if(([i:i+3]=="bob") or ([i:i+3]=="BOB")'):
b=b+1
print ("Number of times bob occurs is:%s" %b)
然而,当我运行它时,它输出0。
答案 0 :(得分:1)
让我们看看我们是否可以帮助你。
您的代码是
s='bobbbobobboobobookobobbobbboj'
for i in s:
if(i=='BOB' or i=='bob'):
b=b+1
重要的是要考虑这个 - 像" s"是一个字符列表。当你在s中为我做的时候,你正在遍历每个角色。
在第一次迭代中,i ==' b',在第二次迭代时它等于' o'等等。
您想要的是检查代码部分的内容。这样做的方法是
for i in range(len(s)):
if s[i:i+4] == "bob":
这个工作的原因是范围按顺序返回一个数字列表,所以它会变为0,1,2,3 ... [i:i + 4]部分根据字符串切出一部分字符串它到字符串有多远。对于你的字符串s [0:2]将是" bob" (从0开始)。
我留下了几个问题...例如,如果你让它运行到最后你会遇到问题(如果s是10个字符,你试图做[9:12]你会得到错误)...但这应该可以帮助你开始
答案 1 :(得分:1)
>>> s = 'bobbbobobboobobookobobbobbboj'
>>> term = 'bob'
sum(1 for i, j in enumerate(s) if s[i:i+len(term)] == term)
6
答案 2 :(得分:0)
如果您想以Pythonic的方式进行,那么您需要阅读string find function。
如果您想了解如何让字符串查找功能,那么您需要阅读string searching algorithms。
答案 3 :(得分:0)
以下是基于Brandon's answer的链接问题的实现。
def MIT(full_string, substring):
results = []
sub_len = len(substring)
for i in range(len(full_string)):
# range returns a list of values from 0 to (len(full_string) - 1)
if full_string[i:i+sub_len] == substring:
# this is slice notation;
# it means take characters i up to (but not including) i
# + the length of th substring
results.append(i)
return results
full_string = "bobBOBBobBoj"
lower_substring = "bob"
upper_substring = "BOB"
lower_occurrence_array = MIT(full_string, lower_substring)
upper_occurrence_array = MIT(full_string, upper_substring)
number_of_lower_occurrences = len(lower_occurrence_array)
number_of_upper_occurrences = len(upper_occurrence_array)
number_of_occurrences = number_of_lower_occurrences + number_of_upper_occurrences
print ("Number of times bob occurs is: %s" %number_of_occurrences)
结果是
bob发生的次数是:2
主要要点已经在Paul's answer,但我希望这会有所帮助。
答案 4 :(得分:0)
start=0
count=0
while start<=len(s):
n=s.find('b',start,len(s))
prnt=(s[start:start+3])
if prnt =='bob':
start=n+2
count+=1
else:
start+=1
print count
答案 5 :(得分:0)
A
B C
D E F G
这是保罗答案的延伸。代码的结果是:
def bobcount(x):
bobcounter = 0
for i in range(len(x)):
if (x[i:i+3]=="bob") or (x[i:i+3]=="BOB"):
bobcounter = bobcounter + 1
return bobcounter
答案 6 :(得分:0)
猜猜我有点晚了,但你可以试试这个:
from re import findall
def bobcount(word):
return len(findall(r'(bob)', word.lower()))
答案 7 :(得分:0)
s = ('bobobobobobob')
count = 0
for i in range(len(s)):
if s[i:i+3] == "bob":
count += 1
print ('Number of times bob occurs is: ' + str(count))