#Aufgabe 3 import re titel_pattern = r'([A-Z][a-zäüöß]+\.-?)+' name_pattern = r'[A-Z][a-zäüöß]+' vorname_pattern = r'[A-Z][a-zäüöß]+' zweitname_pattern = r'(-{1}[A-Z][a-zäüöß]+)+' nachname_pattern = r'\s{1}[A-Z][a-z]+' geburtstag_pattern = r'\d{4}-\d{2}-\d{2}' adresse_pattern = r'[A-Z][a-zäüöß]+(\s{1}\d+\,\d+\s{1}\w+)' strasse_pattern = r'[A-Z][a-zäüöß]+\s{1}' hausnummer_pattern = r'\s{1}\d+' plz_pattern = r'\d{5}' wohnort_pattern = r'\s{1}[A-Z][a-z]+' """titel = '' name = '' vorname = '' zweitname = '' nachname = '' geburtstag = '' adresse = '' straße = '' hausnummer = '' plz = '' wohnort = ''""" counter = 0 #Datei zum Schreiben öffnen with open('PersonenNeu.json', 'w') as f2: #Array öffnen f2.write('[') #Datei zeilenweise einlesen und auswerten with open('Personen2.txt', 'r') as f1: for line in f1: print(counter, ':', line) """line = line.replace('Ä', 'Ae') line = line.replace('Ö', 'Oe') line = line.replace('Ü', 'Ue') line = line.replace('ä', 'ae') line = line.replace('ö', 'oe') line = line.replace('ü', 'ue') line = line.replace('ß', 'ss')""" #Titel, vollen Namen, volle Adresse & Geburtsdatum auslesen titel = re.search(titel_pattern, line) name = re.search(name_pattern, line) adresse = re.search(adresse_pattern, line) geburtstag = re.search(geburtstag_pattern, line) print('Titel:', titel) print('Name:', name) print('Adresse:', adresse) print('Geburtstag:', geburtstag) #Daten aufteilen & umwandeln #vollen Namen aufteilen in Vor-, Zweit- & Nachnamen if name is not None: vorname = re.search(vorname_pattern, name.group(0)) print('Vorname:', vorname) zweitname = re.search(zweitname_pattern, name.group(0)) print('Zweitname:', zweitname) nachname = re.search(nachname_pattern, name.group(0)) print('Nachname:', nachname) #- und Leerzeichen entfernen und match entnehmen if vorname is not None: vorname = vorname.group(0) if zweitname is not None: zweitname = re.sub('-', '', zweitname.group(0)) if nachname is not None: nachname = re.sub(' ', '', nachname.group(0)) #Geburtstag umwandeln if geburtstag is not None: geburtstag = re.sub(r'(\d{4})-(\d{2})-(\d{2})', r'\3.\2.\1', geburtstag.group(0)) #volle Adresse aufteilen in Straße, Hausnummer, PLZ & Wohnort & umwandeln if adresse is not None: straße = re.search(strasse_pattern, adresse.group(0)) straße = re.sub(' ', '', straße.group(0)) hausnummer = re.search(hausnummer_pattern, adresse.group(0)) hausnummer = re.sub(' ', '', hausnummer.group(0)) plz = re.search(plz_pattern, adresse.group(0)) plz = plz.group(0) wohnort = re.search(wohnort_pattern, adresse.group(0)) wohnort = re.sub(' ', '', wohnort.group(0)) #Titel setzen, falls vorhanden if titel is not None: titel = titel.group(0) #Im JSON Format eintragen if (name is not None) and (name != 'Name') and (geburtstag is not None) and (adresse is not None): f2.write("{\n" "'Index': %i,\n" "'Titel':['%s'],\n" "'Vorname':['%s'],\n" "'Zweitname':['%s'],\n" "'Nachname':['%s'],\n" "'Geburtsdatum':['%s'],\n" "'Straße':['%s'],\n" "'Hausnummer':['%s'],\n" "'PLZ':['%s'],\n" "'Wohnort':['%s'],\n" "},\n" % (counter, titel, vorname, zweitname, nachname, geburtstag, straße, hausnummer, plz, wohnort) ) counter += 1 #Array schließen f2.write(']')