Als txt-Datei herunterladen


# 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)