Python - Wortzähler

Dragan
dieses nette script zählt die wörter in einer textdatei (ohne sonderzeichen und zahlen) und schreibt sie alphabetisch sortiert in ein resultfile.
das script startet man mit 2 argumenten:
wc.py <sourcefile> <resultfile>

hm, ich seh gerade, dass die einrückungen nicht stimmen... wenn das nicht stimmt läuft das script net Mauer




code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
from string import split,lower,translate,maketrans
from sys import argv

# liest eine Datei
def readfile(file):
        in_file = open(file,"r")
        text = in_file.readlines() # Datei komplett einlesen
        in_file.close() # Datei schliessen
        return text      # und Inhalt zurückgeben
# schreibt in eine datei
def writefile(str, file):
        out_file = open(file, "a") # datei zum anfügen öffnen
        out_file.write(str)# zeichenkette in datei schreiben
        out_file.close()# datei schließen

# Hauptprogramm:
infile = argv[1]
outfile = argv[2]
print "nLese Datei: " + infile

textlist = readfile(infile)
#textlist = split(text)# text in liste
wdic = {}# das dictionary

print "Zaehle Woerter ..."
word = []
for line in textlist:
        tbl = maketrans(line, line)
        line = translate(line, tbl, ""@,.!?*&§^°%#~=:;+-<>|_'`´/{}()$[]0123456789")#entfernen von sonderzeichen und zahlen
        word = split(lower(line))
        
        for w in word:
                # dictionary fuellen
                if wdic.has_key(w):
                        wdic[w] = wdic[w] + 1
                else:
                        wdic[w] = 1

eintraege = wdic.items()# schluesselliste holen
eintraege.sort()# schluessel sortieren
del eintraege[0]

wordstring = ""
vocabs = 0
words = len(eintraege)
mostoccured = ""
mostoccurences = 0
for eintrag in eintraege:
        # wortzeichenkette erstellen, die in das resultfile geschrieben wird
        wordstring = wordstring + eintrag[0] + " : " + str(eintrag[1]) + "n"
        vocabs = vocabs + eintrag[1]
        if (eintrag[1] > mostoccurences):
                mostoccured = eintrag[0]
                mostoccurences = eintrag[1]

writefile("nVokabeln gesamt: %snWoerter gesamt: %snHaeufigstes Wort: %snHäufigkeit: %sn" % (vocabs, words, mostoccured, mostoccurences), outfile)
writefile(wordstring, outfile)

print "nVokabeln gesamt: %snWoerter gesamt: %snHaeufigstes Wort: %snHäufigkeit: %sn" % (vocabs, words, mostoccured, mostoccurences)

print "nnFeddischn"



für die, die nicht wissen was python ist:
python ist eine objektorientierte, plattform unabhängige scriptsprache. sie ist an c angelehnt und bietet recht nette funtkionen. einsatz im webbereich auch möglich, zb in verbindung mit einer db.
mehr dazu gibts unter www.python.org

mfg dragan

ps: wußtet ihr, dass das häufigste wort in der bibel 'und' ist und 49229mal vorkommt. insgesamt besteht die bibel aus knapp 720K vokabeln, aber nur der gesamte text nur aus 24423 wörtern besteht?

jetzetle hab ich den tag für code geblickt