<jupyter_start><jupyter_text>05 Dokumente ein- und auslesen Etwas, das wir mit Python sehr gut tun können, ist grosse Datenmengen einlesen, die Daten in eine Form bringen, damit wir damit arbeiten können, um interessante Geschichten zu finden. Und was ebenfalls sehr gut geht, viel besser als mit den meisten anderen Programmiersprachen, ist die Behandlung von Text-Dokumenten, um daraus maschinenlesbare Datensätze zu entwickeln.  Mit dem folgenden Befehl ```ls``` für Liste zeigen wir alle Files und Folder auf derselben Stufe des aktuellen Notebooks an. Los!<jupyter_code>ls<jupyter_output>01 install anaconda.md                05 Dokumente ein- und auslesen.ipynb
02 Jupyter.md                         [34mgerichts-urteile[m[m/
03 Work-Flow.md                       gerichtsdokumente.csv
04 Modules & Libraries.ipynb<jupyter_text>Ihr seht hier alle Notebooks und Notizbücher, die wir heute zusammen durcharbeiten. Abgelegt ist ebenfalls ein Folder namens "gerichts-urteile/". Zeigen wir an, was sind darin befindet. Das tun wir, indem wir ```ls```aufrufen, kombiniert mit dem Namen des Folders als String.<jupyter_code>ls "gerichts-urteile/"<jupyter_output>10.txt            2C_151_2011.txt   56.txt            6B_660_2008.txt
100.txt           2C_155_2012.txt   57.txt            6B_661_2007.txt
101.txt           2C_164_2016.txt   58.txt            6B_662_2016.txt
102.txt           2C_165_2008.txt   59.txt            6B_666_2007.txt
103.txt           2C_166_2011.txt   5A_105_2015.txt   6B_671_2007.txt
104.txt           2C_172_2011.txt   5A_106_2007.txt   6B_672_2007.txt
105.txt           2C_179_2008.txt   5A_106_2008.txt   6B_672_2012.txt
106.txt           2C_17_2008.txt    5A_110_2009.txt   6B_678_2007.txt
107.txt           2C_186_2009.txt   5A_113_2007.txt   6B_692_2013.txt
108.txt           2C_186_2016.txt   5A_114_2008.txt   6B_6_2007.txt
109.txt           2C_18_2010.txt    5A_114_2012.txt   6B_731_2007.txt
11.txt            2C_190_2008.txt   5A_115_2007.txt   6B_733_2011.txt
110.txt           2C_19_2010.txt    5A_115_2009.txt   6B_741_2007.txt
111.txt           2C_201_2009.txt   5A_116_2008.txt   6B_743_2007.txt
112.txt [...]<jupyter_text>Wie ihr seht, sind das ziemlich viele Dokumente. Wie sie alle einlesen und zu jedem Dokumente strukturierte Daten auszulesen versuchen. Datum, Aktennummern, Name des Anwalts, etc.  Das Vorgehen1. Wir werden dafür zuerst eine Liste erstellen aller Dokumente.2. Alle Dokumente ein- und auslesen3. Dann werden wir von jedem einzelnen Dokument das Datum und die Aktennummer ziehen. Und allenfalls noch den Namen des Anwalts4. Dieses Resultat werden wir als Dictionary-Liste abspeichern5. Dann speichern wir das als .csv ab Um ganz einfach eine Liste von Elementen in einem Folder zu erstellen, können wir das Module ```os```verwenden. Damit wir das Module verwenden können, müssen wir das Module zuerst importieren.  1. Liste aller Dokumente<jupyter_code>import os
die_liste = os.listdir("gerichts-urteile/")<jupyter_output><empty_output><jupyter_text>2. Einlesen von Dokumenten Nehmen wir das erste Dokument in der Liste:<jupyter_code>die_liste[0]
f = open("gerichts-urteile/2C_641_2007.txt", "r")
f
print(f.read()) #100 schneidet das Element aber gleich, wegen Memory-Problemen<jupyter_output>2C_641/2007 (25.04.2008)












         Wichtiger Hinweis:
         
         Diese Website wird in älteren Versionen von Netscape ohne graphische Elemente dargestellt. Die Funktionalität der Website ist aber trotzdem gewährleistet. Wenn Sie diese Website regelmässig benutzen, empfehlen wir Ihnen, auf Ihrem Computer einen aktuellen Browser zu installieren.
      


Zurück zur Einstiegsseite
Drucken


Grössere Schrift




       
   





Tribunale federale
Tribunal federal
 
{T 0/2}
2C_641/2007 /zga
 
Urteil vom 25. April 2008
II. öffentlich-rechtliche Abteilung
 
Besetzung
B<NAME>, Präsident,
<NAME>, Müller,
Gerichtsschreiber Klopfenstein.
 
Parteien
X.________ AG,
Beschwerdeführerin, vertreten durch Advokat <NAME>,
 
gegen
 
Oberzolldirektion, Abteilung LSVA, Gutenbergstrasse 50, 3003 Bern.
 
Leistungsabhängige Schwerverkehrsabgabe
Gegenstand
LSVA (Solidarhaftung für Anhänger),
 
Beschwerde gegen das Urteil
des Bundesverwaltungsgericht, A[...]<jupyter_text>Jetzt bauen wir eine Liste aller Text<jupyter_code>text_liste = []

for text in die_liste:
    f = open("gerichts-urteile/"+text, "r")
    text_liste.append(f.read())
len(text_liste)
text_liste[12]<jupyter_output><empty_output><jupyter_text>3.  Jetzt ziehen wir aus jedem Text das Datum und die Aktennummer<jupyter_code>import re
datum = re.compile(r'\d{2}\.\d{2}\.\d{4}') 
d = re.search(datum, text_liste[11])
d.group()
text_liste[9]
aktenzeichen = re.compile(r'\d\D[_|\.]\d*/\d{4}')  #2C_641/2007 #9F_6/2015 #2A.168/2006 
a = re.search(aktenzeichen, text_liste[11])
a.group()
advokat = re.compile(r'vertreten durch\s\w*\s\w*\s\w*')  #2C_641/2007 #9F_6/2015 #2A.168/2006 
ak = re.search(advokat, text_liste[0])
ak.group()<jupyter_output><empty_output><jupyter_text>Und nun machen wir das über alle Texte.<jupyter_code>datum = re.compile(r'\d{2}\.\d{2}\.\d{4}') 
aktenzeichen = re.compile(r'\d\D[_|\.]\d*/\d{4}')
advokat = re.compile(r'vertreten durch\s\w*\s\w*\s\w*')

for elem in text_liste[:10]:
    d = re.search(datum, elem)
    a = re.search(aktenzeichen, elem)
    try:
        ak = re.search(advokat, elem)
        ak = ak.group()
    except:
        ak = "N/A"

    print(d.group(), a.group(), ak)<jupyter_output>25.04.2008 2C_641/2007 vertreten durch Advokat <NAME>
18.11.2015 1B_405/2015 N/A
12.09.2007 9C_392/2007 N/A
27.04.2015 9F_6/2015 N/A
19.01.2009 5A_723/2008 N/A
11.04.2008 1B_20/2008 N/A
29.06.2011 9C_494/2011 N/A
13.08.2008 4A_219/2008 N/A
28.04.2008 2C_205/2008 vertreten durch Fürsprech Beat Widmer
22.03.2010 4A_2/2010 N/A<jupyter_text>4. Und nun machen wir daraus eine Dictionary-Liste<jupyter_code>datum = re.compile(r'\d{2}\.\d{2}\.\d{4}') 
aktenzeichen = re.compile(r'\d\D[_|\.]\d*/\d{4}')

dict_data = []

for elem in text_liste:
    d = re.search(datum, elem)
    a = re.search(aktenzeichen, elem)
    try:
        ak = re.search(advokat, elem)
        ak = ak.group()
    except:
        ak = "N/A"
    
    mini_dict = {'Datum': d.group(),
                 'Aktenzeichen': a.group(),
                 'Vertreter': ak}
    
    dict_data.append(mini_dict)
    
#<NAME>
#Häufigkeit eines bestimmten Datums
dict_data[:10]
len(dict_data)<jupyter_output><empty_output><jupyter_text>5. Und nun speichern wir das als .csv ab<jupyter_code>import csv
csv_file = "gerichtsdokumente.csv"
csv_columns = ['Datum', 'Aktenzeichen']

try:
    with open(csv_file, 'w') as csvfile:
        writer = csv.DictWriter(csvfile, fieldnames=csv_columns)
        writer.writeheader()
        for data in dict_data:
            writer.writerow(data)
except IOError:
    print("I/O error")
ls<jupyter_output>01 install anaconda.md                05 Dokumente ein- und auslesen.ipynb
02 Jupyter.md                         Names.csv
03 Work-Flow.md                       [34mgerichts-urteile[m[m/
04 Modules & Libraries.ipynb          gerichtsdokumente.csv
{'fraction_non_alphanumeric': 0.09942423816879652, 'fraction_numerical': 0.09254318213734027, 'mean_word_length': 3.318981200727714, 'pattern_counts': {'":': 0, '<': 37, '<?xml version=': 0, '>': 37, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 1, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '9', 'dir': 'jupyter-structured-clean-dedup', 'id': '318356', 'license': 'MIT', 'n_tokens_mistral': 3196, 'n_tokens_neox': 2817, 'n_words': 648, 'path': '05 Local Setup /.ipynb_checkpoints/05 Dokumente ein- und auslesen-checkpoint.ipynb', 'repo_name': 'Tamibobi/kurs_21_22', 'size': '7168'}