pr3_skriptspr_teamF_s2/PyCharmProjekte/temp.py

114 lines
4.2 KiB
Python

#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(']')