Python :: Aufgabe #136 :: Lösung #1

2 Lösungen Lösungen öffentlich
#136

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.
#1
vote_ok
von ZRX88 (2770 Punkte) - 29.12.2016 um 20:12 Uhr
Programm erfüllt nur Wortertrennung a. Für ideen wie man es ohne die reg-expression macht wäre ich dankbar.

Quellcode ausblenden 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))

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben