Seite 1 von 1
Wörter in einem Text zählen OHNE Nummern
Verfasst: Samstag 5. Juni 2021, 21:29
von Princess
Hi,
ich hab gerade in einem Text die Wörter alle in Python zählen lassen, dabei wurden aber auch Nummern mitgezählt. Nun verstehe ich nicht, wie ich Python sagen soll, dass er die Nummern nicht berücksichtigen soll beim Wörter zählen.
Weiß jemand mit welchem Befehl ich das machen kann?
Danke im Voraus.
Re: Wörter in einem Text zählen OHNE Nummern
Verfasst: Samstag 5. Juni 2021, 22:03
von nezzcarth
Zeig doch mal, was du bisher versucht hast, dann kann man dir besser helfen.
Python kann nur das finden, was du als 'Wort' definierst. Da gibt es unterschiedliche Möglichkeiten, je nach Anspruch und Kenntnisstand. In der Praxis sieht man, dass das oft mit regulären Ausdrücken gelöst wird; Python hat für reguläre Ausdrücke ein Modul in der Standardbibliothek. Eine "theoretisch-saubere" Lösung wäre die Verwendung einer Tokenizer-Bibliothek für die jeweilige Textsprache; das ist aber vielleicht etwas Overkill für viele Standardaufgaben.
Re: Wörter in einem Text zählen OHNE Nummern
Verfasst: Samstag 5. Juni 2021, 22:08
von Princess
Mein bisheriger Code:
# Autobiography of a Yogi
AutobiographyofaYogi = open("ayogi.txt", "r")
for line in AutobiographyofaYogi.readlines():
print(line)
AutobiographyofaYogi.close()
AutobiographyofaYogi = "ayogi.txt"
numwords = 0
numlines = 0
with open("ayogi.txt", "r") as AutobiographyofaYogi:
for line in AutobiographyofaYogi:
wordlist = line.split()
numlines += 1
numwords += len(wordlist)
print ("Anzahl Wörter: ", numwords)
print ("Anzahl Zeilen: ", numlines)
Re: Wörter in einem Text zählen OHNE Nummern
Verfasst: Sonntag 6. Juni 2021, 00:04
von __blackjack__
@Princess: Du kennst anscheinend die ``with``-Anweisung, dann solltest Du die auch immer einsetzen wenn es geht.
Wenn Du ”Worte” so definierst in dem Du einfach zählst wie viele Elemente bei einem `split()` der Zeile entstehen, dann zählst Du halt auch Zahlen, also Folgen Ziffern mit, die durch „whitespace“-Zeichen von anderen Zeichenfolgen in der Zeile getrennt sind. Willst Du das nicht, dann musst Du diese Folgen die nur aus Ziffern bestehen herausfiltern. Erkennen kann man die beispielsweise mit der `isdigit()`-Methode auf Zeichenketten.
Code: Alles auswählen
In [65]: "abc".isdigit()
Out[65]: False
In [66]: "abc23".isdigit()
Out[66]: False
In [67]: "42".isdigit()
Out[67]: True