str.count() 方法结果错误

Hen*_*nco 3 python string count

我对一个非常简单的字符串计数操作感到困惑:

s = 'BANANA'
s.count('ANA')
Run Code Online (Sandbox Code Playgroud)

这应该会得到 2,对吗?由于子字符串 ,ANA在 中出现了 2 次BANANA

但结果我得到了 1。

>>> s = 'BANANA'
>>> s.count('ANA')
1
Run Code Online (Sandbox Code Playgroud)

不知道为什么结果错误。就是这么简单的操作!

感谢任何帮助。


PS:我该如何解决这个问题?

Ehs*_*san 5

string.count()不计算重叠出现的次数。

如果您想计算重叠出现的次数,可以对字符串进行简单的循环来计算:

s = 'BANANA'
i = 0
cnt = 0
while True:
    i = s.find('ANA', i)
    if i >= 0:
        i += 1
        cnt += 1
    else:
        break
Run Code Online (Sandbox Code Playgroud)

或者,您也可以使用regex下面 @Henrique's 答案中的内容。

  • 这个前瞻性正则表达式也可以工作(旧的和新的库) - `re.findall(r'(?=(ANA))', s)` 并且 `new regex` 解决方案不应该返回 2 而不是 3 @HenriqueBranco? (2认同)