Was ist der einfachste Weg, um die Anzahl der Vorkommen eines Zeichens in einer Zeichenfolge zu zählen?
zB zählen, wie oft in 'a'
erscheint'Mary had a little lamb'
str.count (sub [, start [, end]])
Gibt die Anzahl der nicht überlappenden Vorkommen von Teilzeichenfolgen
sub
im Bereich zurück[start, end]
. Optionale Argumentestart
undend
werden wie in Slice-Notation interpretiert.
>>> sentence = 'Mary had a little lamb'
>>> sentence.count('a')
4
Wie andere Antworten bereits sagten, ist die Verwendung der Zeichenfolgenmethode count () wahrscheinlich die einfachste. Wenn Sie dies jedoch häufig tun, lesen Sie die Sammlungen. Counter :
from collections import Counter
my_str = "Mary had a little lamb"
counter = Counter(my_str)
print counter['a']
Reguläre Ausdrücke vielleicht?
quelle
len(re.findall('1',bin(10)))
Mehr Infos hier
quelle
Python-3.x:
quelle
str.count(a)
ist die beste Lösung, um ein einzelnes Zeichen in einer Zeichenfolge zu zählen. Wenn Sie jedoch mehr Zeichen zählen müssen, müssen Sie die gesamte Zeichenfolge so oft lesen, wie Sie zählen möchten.Ein besserer Ansatz für diesen Job wäre:
Sie haben also ein Diktat, das die Anzahl der Vorkommen jedes Buchstabens in der Zeichenfolge zurückgibt und
0
falls dieser nicht vorhanden ist.Bei einem Zähler ohne Berücksichtigung der Groß- und Kleinschreibung können Sie die Mutator- und Accessor-Methoden durch Unterklassen überschreiben
defaultdict
(die Basisklassen sind schreibgeschützt):quelle
Counter
, was bereits eine Klasse istcollections
.Counter
ist eine mehr aufgebläht reine Python - Klasse unddefaultdict
‚s__missing__
ist in C geschrieben . Für eine einfache Aufgabe wie diese (int
wird auch in C implementiert) ist dieser Ansatz etwas schneller.Diese einfache und unkomplizierte Funktion könnte helfen:
quelle
str
. Wenn Sie der Variablen ihren Namen geben,str
handelt es sich nicht mehr um einen integrierten Typ. Außerdem zählst du vierzehn Mal vierzehn b. Sie können das einfach vermeiden , indem Siefor c in text
mitfor c in set(text)
.Reguläre Ausdrücke sind sehr nützlich, wenn Sie die Groß- und Kleinschreibung nicht berücksichtigen möchten (und natürlich die ganze Kraft von Regex).
Beachten Sie, dass die Ausführung der Regex-Version zehnmal so lange dauert. Dies ist wahrscheinlich nur dann ein Problem, wenn my_string enorm lang ist oder sich der Code in einer tiefen Schleife befindet.
quelle
quelle
quelle
Eine alternative Möglichkeit , alle Zeichen zählt zu erhalten , ohne
Counter()
,count
und regexquelle
count
ist definitiv die präziseste und effizienteste Methode, um das Auftreten eines Zeichens in einer Zeichenfolge zu zählen, aber ich habe versucht, eine Lösung zu findenlambda
, die Folgendes verwendet:Dies führt zu:
Es gibt noch einen weiteren Vorteil: Wenn der Satz eine Liste von Teilzeichenfolgen ist, die dieselben Zeichen wie oben enthalten, ergibt dies aufgrund der Verwendung von auch das richtige Ergebnis
in
. Guck mal :Dies führt auch zu:
Dies funktioniert natürlich nur, wenn das Auftreten eines einzelnen Zeichens überprüft wird, wie
'a'
in diesem speziellen Fall.quelle
"Ohne count zu verwenden, um das gewünschte Zeichen in der Zeichenfolge zu finden" -Methode.
quelle
Ich bin ein Fan der Pandas-Bibliothek, insbesondere der
value_counts()
Methode. Sie können es verwenden, um das Vorkommen jedes Zeichens in Ihrer Zeichenfolge zu zählen:quelle
quelle
Es gibt zwei Möglichkeiten, dies zu erreichen:
1) Mit eingebauter Funktion count ()
2) Ohne Verwendung einer Funktion
quelle
Nicht mehr als diese IMHO - Sie können die oberen oder unteren Methoden hinzufügen
quelle