を探しているすべてだと思います。重複しない一致の場合はこのコードは重複して動作しますが、count
を使用できます。
string = 'dadada'
substring = 'dad'
results = 0
sub_len = len(substring)
for i in range(len(string)):
if string[i:i+sub_len] == substring:
results += 1
print results
代替
このプロセスは、事前の選択肢を持っているために、その優れたOPに合っが、将来の訪問者のためのが。 コメント欄にお勧めします。
import re
results = sum(1 for _ in re.finditer('(?=dad)', 'dadada'))
この機能は、使用sum
とfor
ループの理由はfinditer
返すイテレータとして反復の数を見つけることである解を見つけるための正規表現の正の先読みを使用します。
また、len(list(re.finditer('(?=dad)', 'dadada')))
を試すと、イテレータをリストに変換してその長さを見つけることができます。
代替
非再
string = 'dadada'
sub = 'dad'
print len([n for n in xrange(len(string)) if string.find(sub, n) == n])
これはstr
のカスタム方法find
機能を備えた実装です。 len
を削除すると、インデックスのリストを取得できます。
単純な 'string.count(word)'では何が問題になりますか? –
もう少し詳しく説明できますか?あなたは何を正確にチェックしていますか?あなたは入力例と期待される出力を表示できますか – CoryKramer
ループの 'end'変数を更新することは決してありません。なぜなら、それは1でカウントするのを止める理由かもしれません。 – xander