【问题标题】:Counting specific strings within another string [duplicate]计算另一个字符串中的特定字符串[重复]
【发布时间】:2018-04-14 05:35:42
【问题描述】:

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

needle = input()
haystack = input()

count = 0

for needle in haystack:
   count += 1

print(count)  

如果 haystack 的输入是 'sesses' 而 needle 是 'ses',我的预期结果将是打印出 2。(ses 在 haystack 中两次)

【问题讨论】:

  • for needle in haystack 实际上正在为“sessess”中的所有项目启动一个循环,返回 6。
  • 是否要计算重叠实例?
  • 我发现这确实是最简单的:import regex as re; len(re.findall('sses','assesses',overlapped=True)) - 请参阅:stackoverflow.com/questions/5616822/…

标签: python


【解决方案1】:

这应该可行:

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

【讨论】:

  • 不幸的是,这不起作用。我尝试了计数功能,但是当我尝试时,我没有得到正确的数字。例如 haystack =assets 和 needle = sses 结果应该是 2,但它打印出 1。
  • 你想让评估中的第三个's'被计算两次?
【解决方案2】:
'sesses'.count('ses') will give you the answer

【讨论】:

  • 很遗憾,这不起作用。我试过使用 haystack.count(needle) 但它给我的结果是 1 而应该是 2。(对于输入评估为干草堆和针的 sses)
【解决方案3】:
for needle in haystack:
    count += 1

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

没有内置的迭代器可以给你想要的东西——另一个字符串出现的迭代器。 haystack.count(needle) 会给你想要的答案;除此之外,您还可以使用 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(查找 "aaaaaa" 和 "aaaaaa"),但上面的代码将返回 4,因为它会找到“aaaaaa”、“aaaaaa”、“aaaaaa”和“aaaaaa强>”。

【讨论】:

    【解决方案4】:

    使用count()

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

    【讨论】:

      【解决方案5】:

      试试这个:)

      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)
      

      【讨论】:

        猜你喜欢
        • 2014-01-30
        • 2018-03-13
        • 1970-01-01
        • 1970-01-01
        • 2012-06-07
        • 1970-01-01
        • 2016-04-10
        • 2011-08-31
        • 1970-01-01
        相关资源
        最近更新 更多