# 8-1 # Frequenzliste wie auf Blatt 7 erzeugen f = open("dostojewski.txt", "r") text = f.read() f.close() wordCount = {} for word in text.split(): if word not in wordCount: wordCount[word] = 1 else: wordCount[word] += 1 # Wir legen eine neue LISTE an, in dem die (Wörternamen + Häufigkeit) nach der Häufigkeit absteigend sortiert wird freq_sorted = sorted(wordCount.items(), key=lambda x: x[1], reverse=True) # Wir geben das erste WORT in dieser Liste aus und den zugehörigen WERT von dem ersten Eintrag dieser Liste aus print( "Das häufigste Wort ist -" + freq_sorted[0][0] + "- und kommt", str(freq_sorted[0][1]), "mal vor.", ) # 8-2 # Import random , damit wir eine Zufallszahl ausgeben können import random # Frequenzliste wie auf Blatt 7 erzeugen f = open("dostojewski.txt", "r") text = f.read() f.close() wordCount = {} for word in text.split(): if word not in wordCount: wordCount[word] = 1 else: wordCount[word] += 1 # Liste in der alle Wörter mit genau einem Vorkommen drinnen gespeichert werden singletons = [] for key, value in wordCount.items(): if value == 1: singletons.append(key) # Eine zufallszahl generieren und das entsprechende Wort aus der Liste ausgegeben zufallszahl = random.randint(0, len(singletons)) print("Das Wort -", singletons[zufallszahl], "- kommt nur ein mal vor.") # 8-3 # wget "http://de.wikipedia.org/wiki/Ludwig_Wittgenstein" −O wittgenstein.html # lynx -dump -assume_charset=utf-8 -hiddenlinks=ignore -nolist -verbose wittgenstein.html > wittgenstein.txt # 8-4 # Wieder Frequenzliste wie üblich erzeugen f = open("wittgenstein.txt", "r") text = f.read() f.close() wordCount = {} for word in text.split(): if word not in wordCount: wordCount[word] = 1 else: wordCount[word] += 1 # Leere Liste erstellen, in der alle Wörter mit 10 oder mehr Vorkommen gespeichert werden tenPlusOccurences = [] # Durch die Frequenzliste laufen und prüfen, ob der Wert eines Wortes >= 10 ist und dann der Liste anhängen for key, value in wordCount.items(): if value >= 10: tenPlusOccurences.append(key) print(tenPlusOccurences) # 8-5 # Wieder Frequenzliste wie üblich erzeugen f = open("wittgenstein.txt", "r") text = f.read() f.close() wordCount = {} for word in text.split(): if word not in wordCount: wordCount[word] = 1 else: wordCount[word] += 1 # Neues Textdatei öffnen, in die reingeschrieben werden soll with open("grosse_woerter.txt", "w") as f2: for key, value in wordCount.items(): # Wir betrachten den ersten Buchstaben jedes Wortes schauen mit .isupper(), ob dieser groß ist. if key[0].isupper(): f2.write(key + "\n") #8-6 #a) 3_buchst_reg = re.compile(r'^\w{3}$') # Alle Wörter mit 3 Buchstaben #b) vokal_reg = re.compile(r'[aeiouAEIOU]+') # Alle Wörter mit Vokalen #c) uml_reg = re.compile(r'[äöüÄÖÜ]+') # Alle Wörter mit Umlauten #d) net_reg = re.compile(r'net$') # Alle Wörter die auf -net Enden #e) vok_3_5_reg = re.compile(r'^[aeiouAEIOU]\w{2,4}$') # Alle Wörter die mit einem vokal anfangen und 3-5 Buchstaben haben #f) ung_reg = re.compile(r'^[A-ZÄÖÜ]\w*ung$') # Alle goßgeschriebenen Wörter, die auf -ung enden #g) gr_8_reg = re.compile(r'^[A-ZÄÖÜ]{1,8}$') # Alle großgeschriebenen Wörter die max. 8 Buchstaben lang sind #h) vok_uml_reg = re.compile(r'^[^aeiouöüAEIOUÄÖÜ]*$') # Alle Wörter, die mit einem vokal oder Umlaut beginnen #8-7 import re text = open("wittgenstein.txt", "r").read().split('\n') #Datei öffnen, in String einlesen und am Newline aufteilen wort_regex = re.compile(r'\w+') #alle Wörter klein_regex = re.compile(r'^[a-zäöü]\w+') # alle kleingeschriebenen Wörter freq = {} # Erzeugen einer Frequenzliste wie auf dem letzten Aufgabenblatt for zeile in text: for word in re.findall(wort_regex, zeile): #alles, was dem Regex entspricht, d.h. nur Buchstaben if word in freq: freq[word] += 1 else: freq[word] = 1 for word in freq.keys(): #nur die Keys werden durchgegangen if re.match(klein_regex, word): #wenn der Regex genau auf den Anfang passt print(word) # Ausgabe aller kleinen Wörter #8-8 import re text = open("wittgenstein.txt", "r").read().split('\n') #s.o. groß_regex = re.compile(r'^[A-ZÄÖÜ]') #alle Wörter, die mit einem Großbuchstaben anfangen for zeile in text: zeile = zeile.strip() # Leerstellen am Anfang und am Ende der Zeile entfernen if re.match(groß_regex, zeile): print(zeile) # Ausgabe aller Zeilen, die mit einem Großbuchtsaben beginnen #8-9 import re text = open("wittgenstein.txt", "r").read().split('\n') #s.o. artikel_regex = re.compile(r'\b(der|die|das|Der|Die|Das)\b') # matched der, die, das und Der, Die, Das for zeile in text: zeile = zeile.strip() #s.o. if re.search(artikel_regex, zeile): #wenn der Regex irgendwo in der Zeile passt print(zeile) #8-10 import re text = open("wittgenstein.txt", "r").read().split('\n') #s.o. wortsz_regex = re.compile(r'\w+[?!.,;;-_:]$') # matched Satzzeichen am Ende eines Wortes freqliste = {} # Erzeugen eine Frequenzliste aus Wörtern mit Satzzeichen am Ende for zeile in text: for word in re.findall(wortsz_regex, zeile): #funktioniert wie der "Wortregex" if word in freqliste: freqliste[word] += 1 else: freqliste[word] = 1 for word in freqliste.keys(): #jetzt geben wir jedes Wort nur noch einmal aus print(word) # 8-11 # Archive von Herrn Hadersbecks Seite runterladen und entpacken, Textdatei in lokalen Ordner kopieren search_term = input("Bitte geben Sie einen Suchbegriff ein: ") # Eingabe umdrehen reversed_search_term = search_term[::-1] # Umgedrehten Term einmal ausgeben. print(search_term, "umgedreht: ", reversed_search_term) # Große Datei öffnen und in String speichern. f = open("sz_1Mio.txt", "r") text = f.read() f.close() # Einzeln durch die Wörter durchlaufen for word in text.split(): # prüfen ob der string vom reversed_search_term irgendwo innerhalb des "word" vorzufinden ist if reversed_search_term in word: print(word)