【问题标题】:To find how many times a substring(overlapped) occurred in a string [duplicate]查找字符串中出现子字符串(重叠)的次数[重复]
【发布时间】:2021-01-11 04:27:06
【问题描述】:

对于这段代码,

f='ana'
g='banana'
print(g.count(f))

为什么它给出 1 作为输出而不是 2。他们在我的代码中是否有任何错误。也有人可以建议任何替代方法。

【问题讨论】:

  • documentation for count 表示它返回“字符串 s[start:end] 中子字符串 sub 的(非重叠)出现次数。”
  • 更好的 Python 3 链接 documentation;仍然说不重叠。
  • @DavidConrad 感谢您为我解惑。也是他们计算“重叠”事件的任何方法。
  • 我不知道标准方法,但您可以自己编写。搜索第一个匹配项,然后从其后的一个字符开始再次搜索,依此类推。内置方法只发现不重叠的原因是,当它搜索出现时,它会向前跳到完整匹配之后再次搜索,而不是在再次搜索下一个匹配时只前进一个字符。

标签: python-3.x string count substring


【解决方案1】:

根据与您的问题重复的this question 的答案,一种可能的方法是:

def str_count(string, sub):
    count = start = 0
    while True:
        start = string.find(sub, start) + 1
        if start > 0:
            count+=1
        else:
            return count

【讨论】:

  • 好的,非常感谢。
猜你喜欢
  • 1970-01-01
  • 2020-06-02
  • 2018-01-30
  • 2017-10-23
  • 2017-08-05
  • 2018-02-13
  • 2013-07-03
  • 2017-06-16
  • 1970-01-01
相关资源
最近更新 更多