2016-06-23 6 views
0

Es gibt zwei Vorkommen von 'aba' in 'ababa' (0. Index und 2. Index):Python String Count funktioniert nicht richtig?

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

Doch dieser Code Wert der Ausgänge: 1
ich dieses Problem weiß wirklich einfach zu sein scheint, aber shouldn Ist die Antwort 2 hier?
Wenn nicht, dann funktioniert die Zählfunktion nicht wirklich, was sie eigentlich soll?

Gibt es eine einfache Alternative?

+0

Es ist richtig. 'ababa' -' aba' = 'ba'. 'ba' ist nicht' aba'. Also das ist 1. –

+0

Es gibt auch das: http://stackoverflow.com/questions/2970520/string-count-with-overlapping-occurrences – Headcrab

+0

Wenn Sie "" ein ".count (" a ")" würden Sie erwarten, Unendlichkeit als der Graf? Warum nicht? – TessellatingHeckler

Antwort

3

Vom Python string function documentation

Return die Anzahl der nicht überlappende Vorkommen von Unter im Bereich String [Start, Ende]. Optionale Argumente Start und Ende werden als Slice-Notation interpretiert.

count zählt keine überlappenden Vorkommen.

Wenn Sie überlappende Vorkommen zählen mögen Sie Regex mit einer vorwärtsgerichteten Behauptung verwenden:

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

Dokumentation zur Rettung: https://docs.python.org/2/library/string.html

Return die Anzahl der (nicht überlappende) Vorkommen von Teilzeichenunter in string s [Start: Ende]. Die Standardwerte für Anfang und Ende und die Interpretation der negativen Werte sind die gleichen wie für Slices.

Verwandte Themen