计算另一个字符串中的特定字符串

时间:2017-11-01 19:56:08

标签: python

我试图弄清楚如何计算一个字符串出现在另一个字符串中的次数。我试图使用并使用过的代码到目前为止还没有奏效。

needle = input()
haystack = input()

count = 0

for needle in haystack:
   count += 1

print(count)  

我的预期结果如果干草堆的输入是' sesses'并且针是' ses'将打印出2.(ses在大海捞针两次)

5 个答案:

答案 0 :(得分:1)

'sesses'.count('ses') will give you the answer

答案 1 :(得分:1)

for needle in haystack:
    count += 1

这不起作用的原因是“for x in y”迭代y中的值,并且/将它们/放入x;它不读取x。因此,在您的代码示例中,您正在迭代haystack(在Python中,意味着循环遍历每个字母),然后将值(每个字母)放入针中。这不是你想要的。

没有内置的迭代器可以提供你想要的东西 - 另一个字符串出现的迭代器。 haystack.count(针)会给你想要的答案;除此之外,您还可以使用haystack.find查找从给定点开始的事件,并自己跟踪您在字符串中的位置:

index = haystack.find(needle)
while index >= 0:
    count += 1
    index = haystack.find(needle, index + 1)

请注意,这将给出与haystack.count不同的答案:haystack.count将永远不会计算两次字母,而上述将会。所以“aaaaaa”.count(“aaa”)将返回2(发现“ aaa aaa”和“aaa aaa ”),但上面的代码将返回4,因为它会找到“ aaa aaa”,“ aaa aa”,“aa aaa a”和“aaa aaa ”。

答案 2 :(得分:1)

使用count()

needle = input()
haystack = input()
print haystack.count(needle)

答案 3 :(得分:1)

试试这个:)

characters = 'ses'
word = 'sesses'
chunkSize = 1

count = 0
while chunkSize < len(word):
    for i in range(len(word) - chunkSize + 1):
        if word[i:chunkSize+i] == characters:
            count += 1
    chunkSize += 1
print(count)

答案 4 :(得分:0)

这应该有效:

a='seses'
b='se'
print a.count(b)
>>2