ich habe das folgende Problem:
Ich habe eine Namensliste, welche mit einem Textfile abgeglichen wird. Das Problem ist, dass der Name aber 1zu1 in der Liste auftauchen muss. Sind Vorname und Nachname vertrauscht, meldet das Programm keinen Treffer.
Bsp.:
Textdatei --> Max Mustermann
Namensliste --> Mustermann Max
Die Namensliste enthält pro Namen(Vor+Nach) eine Zeile.
Natürlich könnte ich jetzt die Liste ergänzen und alle vorhandenen Namen umdrehen und in der Liste hinterlegen. Da dies jedoch aber nicht wirklich zielführend ist, wollte ich fragen, ob mir jemand einen Tipp geben könnte.
Mein bisheriger Code:
Code: Alles auswählen
def namensfindung(namensliste, textdatei, lev):
name_dict = {}
for txt in textdatei:
dateiname = os.path.basename(txt)
with open(namensliste) as v, open(
txt) as test:
worte = set(line.strip().lower() for line in v)
wort_test = [line.strip().lower() for line in test]
for namePdf in wort_test:
for nameListe in worte:
distanz = lv.minimum_distanz(nameListe, namePdf, lev)
if distanz is not None:
if any(w in namePdf for w in worte):
name_dict.setdefault(namePdf, []).append(dateiname)
return name_dict
Info: lv.minimum_distanz ist eine Funktion welche den Levenshtein-Algorithmus beinhaltet.
Mit freundlichen Grüßen
klingeling