Wörter in einem Text zählen OHNE Nummern

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Princess
User
Beiträge: 2
Registriert: Samstag 5. Juni 2021, 21:27

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.
nezzcarth
User
Beiträge: 1631
Registriert: Samstag 16. April 2011, 12:47

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.
Princess
User
Beiträge: 2
Registriert: Samstag 5. Juni 2021, 21:27

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)
Benutzeravatar
__blackjack__
User
Beiträge: 12984
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Antworten