ソースを参照

Programm wiederhochgeladen

tester 5 年 前
コミット
f2281acd5d
1 ファイル変更100 行追加0 行削除
  1. 100 0
      Textanalyse.py

+ 100 - 0
Textanalyse.py

@@ -0,0 +1,100 @@
+# -*- 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")