如何查找和计算变量字符串中存在的字符串特定片段的数量?

2024-10-01 00:33:43 发布

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

s=input(str('Enter String:'))
bobcount=0
for letter in s:
    if s[s.find(letter) : s.find(letter)+3]=='bob':
        bobcount+=1
print(bobcount)

在我看来,我的代码是正确的,但它输出了错误的答案。有人能帮忙吗?在这个例子中,我试图输出字符串中“bob”出现的次数


Tags: 答案代码inforinputstringif错误
2条回答

所以.find()总是返回给定键的第一个实例。假设字符串是bobabob,那么结果是4。因为您遍历字符串,对于每个给定的字母,他都会搜索字母的第一次出现。所以第一个b将导致第一个bobo不满足if语句。然后是另一个b。但是if语句不会查看第二个b的字符串,然后再查看3个字符……它将使用第一个b的外观,因此从一开始就得到bob

我希望你明白我想说的话!总而言之:

当您在字符串中查找bob并且b的第一次出现是bob组合的一部分时,打印将为您提供字符串中b的数量,因为每个b都将if语句引向第一个bob。如果您的第一个b不是bob组合的一部分,例如breadbobbob,您的结果将始终是0

解决这个问题的简单方法是使用s.count("bob")

  • 如果不希望重复计数,请使用str.count()。例如:
>>> "bobob".count("bob")
1
  • 如果想要重叠计数,请使用正则表达式。例如:
>>> import re
>>> text = "bobob"
>>> len(re.findall('(?=bob)', text))
2

相关问题 更多 >