|
@@ -1,100 +0,0 @@
|
|
|
-# -*- coding: utf-8 -*-
|
|
|
-
|
|
|
-import sys
|
|
|
-import re
|
|
|
-import os
|
|
|
-import platform
|
|
|
-import collections
|
|
|
-
|
|
|
-Regex_Worte = "[a-zA-ZäüöÄÜÖß]+"
|
|
|
-Regex_Saetze = "[.!?][ \"\n\r\f]"
|
|
|
-
|
|
|
-count_min = 0
|
|
|
-count_max = 0
|
|
|
-count_mittel = 0.0
|
|
|
-count_liste = []
|
|
|
-woerterbuch = []
|
|
|
-
|
|
|
-# Loeschen des Bildschirms
|
|
|
-if platform.system() == 'Windows':
|
|
|
- os.system('cls')
|
|
|
-else:
|
|
|
- os.system('clear')
|
|
|
-
|
|
|
-# Erklaerung der Programmfunktion
|
|
|
-print("Text-Statistik")
|
|
|
-print("-" * 85)
|
|
|
-print("Die angegebene Datei wird auf die Anzahl von Sätzen und auf Worthäufigkeit analysiert.")
|
|
|
-print("-" * 85)
|
|
|
-print("\n")
|
|
|
-
|
|
|
-# Datei einlesen
|
|
|
-try:
|
|
|
- dateiname = raw_input("Name der zu analysierenden Datei: ")
|
|
|
- datei = open(dateiname)
|
|
|
- text = datei.read()
|
|
|
- datei.close()
|
|
|
- print("\n")
|
|
|
-except:
|
|
|
- print("Die angegebene Datei existiert leider nicht! Bitte Programm neu starten ...\n")
|
|
|
- sys.exit(0)
|
|
|
-
|
|
|
-# Anzahl der Worte in der Datei
|
|
|
-anzahl_worte = len(re.findall(Regex_Worte, text))
|
|
|
-
|
|
|
-# Anzahl der Sätze in der Datei - Problem: Ordnungszahlen, Punkt am Textende
|
|
|
-anzahl_saetze = len(re.findall(Regex_Saetze, text))
|
|
|
-
|
|
|
-# min., max. und mittlere Anzahl von Worten in einem Satz
|
|
|
-saetze = re.split(Regex_Saetze, text)
|
|
|
-
|
|
|
-for i in saetze:
|
|
|
- count_worte = len(re.findall(Regex_Worte, i))
|
|
|
-
|
|
|
- # sortierte Liste bilden, erstes und letztes Element = min und max
|
|
|
- if count_worte <> 0:
|
|
|
- count_liste.append(count_worte)
|
|
|
-
|
|
|
-count_liste.sort()
|
|
|
-count_min = count_liste[0]
|
|
|
-count_max = count_liste[len(count_liste)-1]
|
|
|
-count_mittel = "%.1f" % (float(anzahl_worte) / len(count_liste))
|
|
|
-
|
|
|
-# Häufigkeit von auftretenden Worten absteigend sortiert
|
|
|
-for i in saetze:
|
|
|
- i = i.replace("\n", "")
|
|
|
- i = i.replace(",", "")
|
|
|
- i = i.replace('"', "")
|
|
|
- i = i.replace("(", "")
|
|
|
- i = i.replace(")", "")
|
|
|
- i = i.replace(":", "")
|
|
|
-
|
|
|
- woerter = i.split(" ")
|
|
|
- woerterbuch = woerterbuch + woerter
|
|
|
-
|
|
|
-for i in woerterbuch:
|
|
|
- if not re.findall(Regex_Worte, i):
|
|
|
- woerterbuch.remove(i)
|
|
|
-
|
|
|
-woerterbuch = [i.lower() for i in woerterbuch]
|
|
|
-wordcount = collections.Counter(woerterbuch)
|
|
|
-
|
|
|
-
|
|
|
-# Ausgabe der Werte
|
|
|
-print("Ergebnis der Analyse:\n")
|
|
|
-print("Die Datei '" + dateiname + "' enthält " + str(anzahl_worte) +
|
|
|
- " Worte in " + str(anzahl_saetze) + " Sätzen. \n")
|
|
|
-
|
|
|
-print("Der kürzeste Satz besteht aus " + str(count_min) +
|
|
|
- " Worten und der längste Satz aus " + str(count_max) + " Worten.")
|
|
|
-print("Im Mittel habe die Sätze dieses Textes " +
|
|
|
- str(count_mittel) + " Worte. \n")
|
|
|
-
|
|
|
-print("Häufigkeit der Worte im Text: \n")
|
|
|
-# for key, value in wordcount.iteritems():
|
|
|
-# print('{0:>2}'.format(value) + " " + key)
|
|
|
-
|
|
|
-for key, value in sorted(wordcount.iteritems(), key=lambda (k, v): (v, k), reverse=True):
|
|
|
- print('{0:>4}'.format(value) + " " + key)
|
|
|
-
|
|
|
-print("\n\n-- Ende des Analyseberichts -- \n")
|