2016-06-23 11 views
0

「アベバ」(0番目のインデックスと第二インデックス)の「ABA」の2つの出現がありますPython文字列の数が正しく機能していませんか?

myString = 'ababa' 
print(myString.count('aba')) 

しかし、このコードは、の値を出力:私は、この問題は本当に簡単なようだ知っている1
を、しかしshouldnここで答えは2ではない?
そうでなければ、カウント関数はそれが想定していたことを実際に行っていませんか?

単純な選択肢はありますか?救助へ

+0

それは正しいです。 'ababa' - ' aba' = 'ba'です。 'ba'は' aba'ではありません。だからthats 1. –

+0

これもあります:http://stackoverflow.com/questions/2970520/stest-count-with-overlapping-occurrences – Headcrab

+0

あなたが '' a "(" a ")'をしたのなら、無限を期待しますか?カウントとして?何故なの? – TessellatingHeckler

答えて

3

範囲のサブサブの非重複出現の数戻り

Python string function documentationから[終了を開始します]。オプションの引数startとendはスライス表記法のように解釈されます。

countは重複していません。

あなたは先読みアサーションで正規表現を使用することができ、重複発生をカウントしたい場合:

import re 
print(len(re.findall('(?=aba)', 'ababa'))) 
2

ドキュメント:https://docs.python.org/2/library/string.html

リターン文字列s内のサブサブの(非重複)発生数[スタート:終了]。開始と終了のデフォルトと負の値の解釈は、スライスの場合と同じです。

関連する問題