我對一個非常簡單的字符串計數操作感到困惑:s = 'BANANA's.count('ANA')這應該導致2,對吧?由于子字符串,ANA在 中出現 2 次BANANA。但結果我得到了 1。>>> s = 'BANANA'>>> s.count('ANA')1不知道為什么錯誤的結果。就是這么簡單的操作!感謝任何幫助。PS:我該如何解決這個問題?
4 回答

qq_遁去的一_1
TA貢獻1725條經驗 獲得超8個贊
string.count()不計算重疊事件。
如果你想計算重疊的次數,一個簡單的字符串循環將計算它:
s = 'BANANA'
i = 0
cnt = 0
while True:
i = s.find('ANA', i)
if i >= 0:
i += 1
cnt += 1
else:
break
或者,您也可以regex在下面的@Henrique 回答中使用。

神不在的星期二
TA貢獻1963條經驗 獲得超6個贊
regex使用新庫解決了問題。它有一個overlapped非常有用的新參數。
>>>import regex as re
>>>len(re.findall("ANA", "BANANA", overlapped=True))
2
我在 SO 中找到了這個問題的解決方案。
添加回答
舉報
0/150
提交
取消