亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

str.count() 方法中的錯誤結果

str.count() 方法中的錯誤結果

泛舟湖上清波郎朗 2022-10-18 17:33:49
我對一個非常簡單的字符串計數操作感到困惑: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 回答中使用。


查看完整回答
反對 回復 2022-10-18
?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

在“BANANA”中,只有一個完整的“ANA”。Count() 返回 1,因為在它找到 'ANA' 之后,剩下的就是 'NA'。



查看完整回答
反對 回復 2022-10-18
?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

好問題。但是 Python 字符串 count() 不會“回溯”。一旦找到第一個“ANA”,它就會通過剩余的兩個字母“NA”向前看。

這種“前向搜索”與大多數編程語言相同,例如 Java indexOf()、 C strstr()和 VB.Net InStr()


查看完整回答
反對 回復 2022-10-18
?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

regex使用新庫解決了問題。它有一個overlapped非常有用的新參數。


>>>import regex as re

>>>len(re.findall("ANA", "BANANA", overlapped=True))

2

我在 SO 中找到了這個問題的解決方案。


查看完整回答
反對 回復 2022-10-18
  • 4 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號