#Aufgabe 3 import codecs import re titel_pattern = r'([A-Z][a-zäüöß]+\.-?)+' vorname_pattern = r'[A-Z][a-zäüöß]+[\s-]' zweitname_pattern = r'(-[A-Z][a-zäüöß]+)+\s' nachname_pattern = r'\s[A-Z][a-zäüöß]+$' straße_pattern = r'([A-Z][a-zäüöß]+[\s-]?)+' hausnummer_pattern = r'\s{1}\d+' plz_pattern = r'\d{5}' wohnort_pattern = r'(\s[A-Z][a-zäüöß]+)+' counter = 0 #Datei einlesen ab 2.Zeile f1 = codecs.open('Personen.txt', 'r', 'utf-8') lines = f1.readlines()[1:] f1.close() #Datei zum Schreiben öffnen with open('PersonenNeu.json', 'w') as f2: #Array öffnen f2.write('[') #Daten zeilenweise einlesen und auswerten for line in lines: entry = line.split(',') #print(entry[0]) #print(entry[1]) #print(entry[2]) #print(entry[3]) #print(entry[4]) #print(counter, ':', line) #Titel titel = re.search(titel_pattern, entry[0]) #print(titel) # Titel setzen, falls vorhanden if titel is not None: titel = titel.group(0) #print(titel) #Vorname vorname = re.search(vorname_pattern, entry[0]) #print(vorname) #Zweitname zweitname = re.search(zweitname_pattern, entry[0]) #print(zweitname) #Nachname nachname = re.search(nachname_pattern, entry[0]) #print(nachname) #- und Leerzeichen entfernen und match entnehmen if vorname is not None: vorname = re.sub('-', '', vorname.group(0), 1) #print(vorname) if zweitname is not None: zweitname = re.sub('-', '', zweitname.group(0), 1) #print(zweitname) zweitname = re.sub(' ', '', zweitname) #print(zweitname) if nachname is not None: nachname = re.sub(' ', '', nachname.group(0), 1) #print(nachname) #Geburtstag setzen & umwandeln geburtstag = entry[3] #print(geburtstag) if geburtstag is not None: geburtstag = re.sub(r'(\d{4})-(\d{2})-(\d{2})', r'\3.\2.\1', geburtstag) #print(geburtstag) #Straße straße = re.search(straße_pattern, entry[1]) #print(straße) straße = re.sub(' ', '', straße.group(0)) #print(straße) #Hausnummer hausnummer = re.search(hausnummer_pattern, entry[1]) #print(hausnummer) hausnummer = re.sub(' ', '', hausnummer.group(0), 1) #print(hausnummer) #PLZ plz = re.search(plz_pattern, entry[2]) #print(plz) plz = plz.group(0) #print(plz) #Wohnort wohnort = re.search(wohnort_pattern, entry[2]) #print(wohnort) wohnort = re.sub(' ', '', wohnort.group(0), 1) #print(wohnort) #Im JSON Format eintragen 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" % (counter, titel, vorname, zweitname, nachname, geburtstag, straße, hausnummer, plz, wohnort) ) if counter < (len(lines) - 1): f2.write("},\n") #Array schließen else: f2.write("}\n]") counter += 1