Python :: Aufgabe #136
2 Lösungen

Wörterzählen in Textdateien
Anfänger - Python
von hollst
- 23.12.2016 um 09:50 Uhr
Man schreibe ein Programm, das bei einer beliebigen Textdatei (ASCII)
a) alle Wörter und
b) alle unterschiedlichen Wörter der Längen 1, 2, 3 ... zählt, wobei zwischen Groß- und Kleinbuchstaben nicht zu unterscheiden sei.
Als Wörter-Trennzeichen sind zu verwenden:
a) alle Sonderzeichen (' ', '.', ',', tab ...) sowie Zahlen (0, 1 ... 9) und
b) alle Chars, die nicht zum Aphabet (abc...xyzäöü) gehören (damit wäre a) bereits automatisch erfüllt).
Anmerkungen:
a) Es gibt auch im Deutschen Wörter der Länge 1, z. B. in "a tempo" oder " a priori" oder bei Abkürzungen ("z. B.").
b) Als Beispieltext kann von hier die komplette Bibelausgabe nach Martin Luther 1912 als ASCII-Datei heruntergeladen und verwendet werden (ist mit 4 MB zu lang als Anhang hier, selbst als *.rar noch ca. 1.2 MB).
Viel Spaß und schöne Weihnachten sowie einen guten Rutsch und Start in 2017.
a) alle Wörter und
b) alle unterschiedlichen Wörter der Längen 1, 2, 3 ... zählt, wobei zwischen Groß- und Kleinbuchstaben nicht zu unterscheiden sei.
Als Wörter-Trennzeichen sind zu verwenden:
a) alle Sonderzeichen (' ', '.', ',', tab ...) sowie Zahlen (0, 1 ... 9) und
b) alle Chars, die nicht zum Aphabet (abc...xyzäöü) gehören (damit wäre a) bereits automatisch erfüllt).
Anmerkungen:
a) Es gibt auch im Deutschen Wörter der Länge 1, z. B. in "a tempo" oder " a priori" oder bei Abkürzungen ("z. B.").
b) Als Beispieltext kann von hier die komplette Bibelausgabe nach Martin Luther 1912 als ASCII-Datei heruntergeladen und verwendet werden (ist mit 4 MB zu lang als Anhang hier, selbst als *.rar noch ca. 1.2 MB).
Viel Spaß und schöne Weihnachten sowie einen guten Rutsch und Start in 2017.
Lösungen:
Programm erfüllt nur Wortertrennung a. Für ideen wie man es ohne die reg-expression macht wäre ich dankbar.
Python-Code

# count words in textfiles\ import os import re from collections import Counter path = 'C:\Users\Robert\Desktop' file_name = 'Luther.txt' os.chdir(path) word_list = [] with open(file_name,'rb') as f: for row in f: for word in re.split('(,|\.|-|:|\r|\n|\t|\?|\!| |[0-9]{1})',str(row.lower())): if re.search('[a-z]',word): word_list.append(word) List = Counter(word_list) word_length =[] for elems in List.keys(): word_length.append(len(elems)) print(List) print(Counter(word_length))

import re datei = open("datei.txt", encoding ="utf8").read().lower() woerter = list(re.findall(r"\b([a-z,ä,ö,ü,ß,']+)\b", datei)) wort_anzahl={} for wort in woerter: l = len(wort) if l in wort_anzahl: wort_anzahl[l] +=1 else: wort_anzahl[l] = 1 print(" Alle Wörter") print("Wortlänge Anzahl") wort_anzahl_liste = list(wort_anzahl.items()) for (wl,anz) in sorted(wort_anzahl_liste): print(" {0:8d} {1:8d}".format(wl,anz)) wort_anzahl={} woerters = set(woerter) for wort in woerters: l = len(wort) if l in wort_anzahl: wort_anzahl[l] +=1 else: wort_anzahl[l] = 1 print("Alle unterschiedlichen Wörter") print("Wortlänge Anzahl") wort_anzahl_liste = list(wort_anzahl.items()) for (wl,anz) in sorted(wort_anzahl_liste): print(" {0:8d} {1:8d}".format(wl,anz))