HOWTO · Python

Silben zählen in Python

Dieses Tutorial zeigt, wie man Silben in Python zählt

Auf dieser Seite

Python kann Vokalbuchstaben in einem Wort oder Satz zählen. Das Ergebnis ist jedoch nur eine grobe Schätzung der Silbenzahl. Die folgenden Beispiele zeigen vier Möglichkeiten, die Buchstaben a, e, i, o und u zu zählen, die Groß- und Kleinschreibung zu vereinheitlichen und die Anzahl jedes einzelnen Vokals zu ermitteln. Bei einer Variante dient set() dazu, die verschiedenen Vokale für Mitgliedschaftsprüfungen zu speichern. Wie viele Silben tatsächlich gesprochen werden, ermitteln diese Beispiele nicht.

Vokalbuchstaben mit einer Schleife und einer if-Anweisung zählen

Eine Schleife prüft jedes Zeichen. Eine if-Anweisung erhöht den Zähler um eins, wenn das Zeichen in der Vokalzeichenfolge vorkommt. Wenn du vorher casefold() aufrufst, kann dieselbe Mitgliedschaftsprüfung sowohl groß- als auch kleingeschriebene englische Vokale erfassen. Das ist die direkteste Variante, wenn du eine Gesamtzahl brauchst.

Führe dieses Beispiel aus:

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

word = "Beautiful"
vowels = "aeiou"
count = 0

for letter in word.casefold():
    if letter in vowels:
        count += 1

print(count)
5

Das Ergebnis sind fünf passende Vokalbuchstaben. Das wiederholte u wird zweimal gezählt, denn die Schleife zählt Vorkommen und nicht verschiedene Buchstaben.

Vokale mit einer Dictionary Comprehension zählen

Verwende ein Dictionary, wenn du für jeden Vokal eine eigene Anzahl seiner Vorkommen benötigst. Die Comprehension durchläuft die Vokale und legt damit die Schlüssel an. Anschließend summiert sie für jeden Wert die passenden Zeichen im normalisierten Wort. Beim Vergleich muss die Variable für das Zeichen aus dem Wort verwendet werden. Ein Vergleich mit dem Schlüssel liefert nicht die beabsichtigten Anzahlen der einzelnen Vokale.

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

word = "Beautiful".casefold()
vowel_counts = {
    vowel: sum(1 for letter in word if letter == vowel)
    for vowel in "aeiou"
}
print(vowel_counts)
{'a': 1, 'e': 1, 'i': 1, 'o': 0, 'u': 2}

Dieses Dictionary gibt Buchstabenhäufigkeiten und keine Silbenzahlen an. Ein Vokal, der nicht vorkommt, bleibt mit dem Wert null im Dictionary enthalten.

Vokale mit dict.fromkeys() zählen

dict.fromkeys() legt für jeden Vokal einen Schlüssel mit demselben Anfangswert an. Hier beginnt jeder Wert bei null. Anschließend erhöht die Schleife den Eintrag für jedes passende Zeichen. Diese Variante eignet sich, wenn du die Initialisierung und das schrittweise Aufsummieren getrennt nachvollziehen möchtest.

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

word = "Beautiful".casefold()
vowel_counts = dict.fromkeys("aeiou", 0)

for letter in word:
    if letter in vowel_counts:
        vowel_counts[letter] += 1

print(vowel_counts)
{'a': 1, 'e': 1, 'i': 1, 'o': 0, 'u': 2}

Da die Dictionary-Werte Ganzzahlen sind, ist es hier unbedenklich, denselben Anfangswert zu verwenden. Die Schlüssel sind die fünf kleingeschriebenen Vokalbuchstaben; ihre Reihenfolge entspricht der Reihenfolge in der angegebenen Zeichenfolge.

Vokalbuchstaben mit einem Set und einer Funktion zählen

Ein Set ermöglicht Mitgliedschaftsprüfungen für eine Sammlung verschiedener Vokale. Wenn du die Logik in eine Funktion einfügst, kannst du sie mit weiteren Wörtern wiederverwenden. Die Funktion gibt eine Anzahl zurück. Ob du diese ausgibst oder mit weiteren Verarbeitungsschritten kombinierst, bleibt dem aufrufenden Code überlassen.

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

def count_vowel_letters(word):
    vowels = set("aeiou")
    return sum(1 for letter in word.casefold() if letter in vowels)


print(count_vowel_letters("Beautiful"))
5

Das Set enthält zwar jeden Vokal nur einmal, doch jedes passende Vorkommen im Wort erhöht die Gesamtzahl um eins. Auch diese Variante vereinheitlicht großgeschriebene englische Buchstaben vor der Mitgliedschaftsprüfung.

Was das Zählen von Vokalen erfasst und was nicht

Diese Beispiele zählen Vorkommen der fünf grundlegenden englischen Vokalbuchstaben. Sie zerlegen Wörter nicht in gesprochene Silben: Schreibweise und Aussprache entsprechen einander nicht eindeutig, und ein Vokalbuchstabe kann stumm sein oder zusammen mit einem anderen Buchstaben einen einzigen Laut darstellen. Beispielsweise findet der Code in Beautiful fünf Vokalbuchstaben, obwohl das Wort drei gesprochene Silben hat. Dieser Unterschied zeigt, warum sich Silben nicht zuverlässig durch das Zählen von Vokalbuchstaben bestimmen lassen.

Die Beispiele verwenden außerdem bewusst ein kleines Alphabet. Akzentuierte Vokale, y und sprachspezifische Schreibregeln sind nicht enthalten. Passe die verwendete Zeichenmenge daher an den Text an, den du verarbeitest. casefold() vereinheitlicht die Groß- und Kleinschreibung, entfernt aber keine Akzente und leitet auch keine Aussprache ab. Für eine schnelle, grobe Schätzung bei englischen Texten sind diese Muster einfach und nachvollziehbar. Für zuverlässige Zahlen gesprochener Silben reicht das Zählen von Vokalbuchstaben allein nicht aus.