字符串';当字符串和子字符串的长度相等时,Python中的s find()不起作用?

字符串';当字符串和子字符串的长度相等时,Python中的s find()不起作用?,python,string,Python,String,find()未将索引0处的“Bl”识别为子字符串。当字符串为'Bl'或'BlUeBe1Bl*fjal9jkl'时。我的代码中可能有什么错误 string = 'Bl' #string = 'BlUeBe1Bl*fjal9jkl' sub_string='Bl' length=len(sub_string) count=0 for i in range(0,len(string)-length+1): if string.find(sub_string,i,i+length)>0:

find()未将索引0处的“Bl”识别为子字符串。当字符串为'Bl'或'BlUeBe1Bl*fjal9jkl'时。我的代码中可能有什么错误

string = 'Bl'
#string = 'BlUeBe1Bl*fjal9jkl'
sub_string='Bl'
length=len(sub_string)
count=0
for i in range(0,len(string)-length+1):
    if string.find(sub_string,i,i+length)>0:
        count+=1
print(f'Count of {sub_string} in {string} is {count}')
当string='Bl'时,输出应为1;当string='blue1bl*fjal9jkl'时,输出应为2,但我分别得到0和1。

find()返回找到的事件的索引。如果字符串的开头与您搜索的子字符串匹配,则结果将为0。您必须检查>=0才能修复此问题。 当未找到子_字符串时,find返回-1

for i in range(0,len(string)-length+1):
    if string.find(sub_string,i,i+length)>=0:
        count+=1
find()函数在未找到任何匹配项时将返回-1,在找到匹配项时将返回0,您可以通过替换此函数来实现解决方案

if string.find(sub_string,i,i+length)>=0:
用于循环的内部

为了更好的理解,请点击下面的链接

返回在s中找到子字符串sub的最低索引 该sub完全包含在s[start:end]中。失败时返回-1。 开始和结束的默认值以及负值的解释为 与切片相同


“如果我首先找到子_字符串的字符串中的索引大于零,则递增计数”。似乎相当正确
0
1
是正确的答案。Python字符串索引从零开始运行,因此
0
表示字符串中的第一个字符。如果
find()
未能找到子字符串,它将返回
-1
string.find(s, sub[, start[, end]])