字符串的find()在Python中的工作方式是否会在字符串和子字符串的长度相等时不起作用?

2024-04-19 18:19:32 发布

您现在位置:Python中文网/ 问答频道 /正文

find()未将索引0处的“Bl”识别为子字符串。当字符串为'Bl'或'bluee1bl*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


Tags: 字符串代码inforstringlencount错误
2条回答

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:

内部for loop

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

https://docs.python.org/2/library/string.html

string.find(s, sub[, start[, end]])

Return the lowest index in s where the substring sub is found such that sub is wholly contained in s[start:end]. Return -1 on failure. Defaults for start and end and interpretation of negative values is the same as for slices.

相关问题 更多 >