Textanalysen mit Python
-site:www.gutenberg.org filetype:txt "daß" -"dass" Hand, Kopf, Auge, Herz, Wort, Ohr, Weg, Fuß, Hals, Mund, Bein, Teufel, Nase, Tag, Finger, Wasser, Boden, Gott, Luft, Zunge, Seele, Mann, Leib, Spiel, Himmel, Gesicht, Sache, Licht, Maul, Welt, Leben, Stein, Geld, Seite, Zeit, Blut, Wind, Haar, Sinn, Wand, Kind, Tür, Hund, Tod, Brot, Haus, Rücken, Zahn, Loch, Pferd
700 kb Plenarprotokoll https://www.bundestag.de/resource/blob/354544/cbded0998345ea5a5a2248dccf38b802/18079-data.txt
400 kb https://www.math.uni-magdeburg.de/~richter/SS17/am2/faust1.txt
- Notizen
import pathlib
files_root = r"C:\example"
subdirectories = False
files_glob = ( r"*.*", r"**/*.*" )[ subdirectories ]
path = pathlib.Path( files_root )
files = path.glob( files_glob )
with file.open( encoding="ISO-8859-1", errors='ignore' )as file:
contents=file.read()
readlines
re.find
fester Text
- Beispiele
"int getchar"
das beste
Wortgrenzen
- Beispiele
\bHamburg\b
Zeilenende
- Beispiele
Biss$
Jokerzeichen
- Beispiele
Rep.ratur
Der Punkt ».«
- Beispiele
\bd\. \bh\.
\.pdf$
Example\.java
Zeichenmengen
- Beispiele
\bim [Nn]achhin
de[mr]zufolge
[Bb][Ww][Vv]
[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzµÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ]
Zeichenbereiche
- Beispiele
[A-Za-zäöüÄÖÜß][a-zäöüß]
[Uu]ber [a-zA-Z]
Wortzeichen
- Beispiele
Beispiel[\w-]
"[\w-]
[\w-]"[\w-]
Nichtwortzeichen
- Beispiele
Beispiel[\w-]
"[\w-]
Musterwiederholungen
- Beispiele
[A-Za-zäöüÄÖÜß]+
A\w+\W+
A\w+\W+B\w+\W+
A\w+\W+B\w+\W+C\w+\W+
A\w+\W+B\w+\W+C\w+\W+D\w+\W
\b([a-z]äöüß)+en\b
\b([a-z]äöüß)+en\b( |\r|\n)+\b([a-z]äöüß)+en\b
\b([a-z]äöüß)+en\b( |\r|\n)+\b([a-z]äöüß)+en\b( |\r|\n)\bzu\b
gezählte Wiederholungen
- Beispiele
auto.{1,20}=
long.{0,3}haul
[Gg]ood.{0,2}[Aa]s
Alternativen
- Beispiele
da saß|dasaß|dasitzen
da saß|dasaß|dasitzen|dasitzt|da sitzt
Anton|Berta|Cäsar
french|français|francais|fran.ais|franz.{0,4}sisch
Optionen
{0,1}
- Beispiele
\b[Tt]ee?in
\b[Tt]ee?in\b
[Bb]lue ?[Ss]tack
\bleg..? [Ww]ert\b
[Aa]rt.?[Oo]f.?[Cc]omput
Das Fragezeichen »?«
- Beispiele
\?['"«»“”„]\?
Untermuster
- Beispiele
nur so ?viel (dazu|sei|will|soll|möchte|sagt)
nur( so)? mittel
nur( so)? umittel
\b[a-zäöüß]+en\b( |\r|\n)+\b[a-zäöüß]+en\b( |\r|\n)\bzu\b
\b(desto|umso)\b[^.,;:!?]{0,30}\b, (je|als)\b
- Bezug nehmen – groß oder klein?
ezug\b.{0,20}(nomm|nehm)
- Beispiele für „über 100jährige“ und Ähnliches
(über|unter).{0,20}jährig
- Suche nach „acht Beispiele“ bei unbekannter Schreibweise
(8|acht).{0,3}Beispiele
Die Klammern »(« und »)«
- Beispiele
\blogar|\blog\(
Negative Rückschau
- Beispiele
(?<!\bthis)(?<!\bthat)(?<!\bher)(?<!\bhis)(?<!\bour)(?<!\byour)(?<!\b's)(?<!\bvarious)(?<!\bother)(?<!\bmy)(?<!\ba)(?<!\bthe) \bpleas?\b(?!')
Optionale Wiederholungen
- Videodateien
.*\.(asf|avi|mpg|mpeg|flv|wmv|mov|rm|divx|xvid|qt|mp4|mpg4|mpeg4|vcd|3gp|m4v|divx|xvid|m4v|rmvb|asx|mkv|ogm|vcd|h264|3g2|vob)
- Suche nach Artikeln
(C|D):.*(Anton|Berta|Cäsar).*(pdf|ps)
Übungsaufgaben
/ grep
Schreiben Sie ein Programm, das alle Zeilen aus einer vorgegebenen Textdatei ausgibt, in denen ein bestimmtes Muster gefunden wird.
(Es ist akzeptabel, wenn der Pfad zur Datei und das Muster zunächst fest im Programm eingebaut sind.)
/ kwic
Schreiben Sie ein Programm, das alle Zeilen aus einer vorgegebenen Textdatei ausgibt, in denen ein bestimmtes Muster gefunden wird. Dabei sollen vor und hinter dem Mustertreffer 20 Zeichen als Kontext erscheinen. (Falls es in der Zeile nicht so viele Zeichen vor oder hinter dem Muster gibt, sollte mit Leerzeichen aufgefüllt werden. Am besten wäre es, wenn auch der Mustertreffer immer die gleiche Länge hätte.)
Beispiele
Beispiele
- Muster für einzelne Zeichen
A Alle Buchstaben stehen für sich selbst
0 Alle Ziffern stehen für sich selbst
. genau ein Zeichen, das kein Zeilenende ist
\b Wortgrenze
\w genau ein (englisches) Wortzeichen
\W genau ein Zeichen, das kein (englisches) Wortzeichen ist
\s genau ein Leerraumzeichen
\S genau ein Zeichen, das kein Lerraumzeichen ist
\d genau eine Dezimalziffer
\D genau ein Zeichen, das keine Dezimalziffer ist
\( runde Klammer auf
\) runde Klammer zu
- Unäre Zirkumfixoperatoren
() ein Muster (das zwischen den Klammern)
- Unäre Postfixoperatoren
? kein oder ein Vorkommen des direkt voranstehenden Musters (greedy)
+ mindestens ein Vorkommen des direkt voranstehenden Musters (greedy)
{2,3} zwei bis drei Vorkommen des direkt voranstehenden Musters (greedy)
* beliebig viele Vorkommen des direkt voranstehenden Musters (greedy)
- Binäre Operatoren
| das linke oder das rechte Muster
- Zeichenmengen
[] genau eines der Zeichen in den eckigen Klammern, Beispiele:
[abc] genau eines der Zeichen »a«, »b« oder »c«
[a-d] genau eines der Zeichen »a«, »b«, »c« oder »d«
[^cx] genau ein Zeichen, das kein »c« oder »x« ist
[^] sollte "ein beliebiges Zeichen" sein, aber ist es vielleicht nicht
Ein beliebiges Zeichen
Es gibt kein einzelnes Musterzeichen, das direkt für ein beliebiges Zeichen steht. Hierfür kann man aber eines der beiden folgenden Muster verwenden: »[\S\s]« oder ».|\n«.