pr3_skriptspr_teamF_s2/PyCharmProjekte/s2_a3.py

122 lines
3.5 KiB
Python

#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