Nachdem ich mich nun eingearbeitet habe und meine Programme größtenteils laufen bin ich auf ein Problem gestoßen. Ich möchte folgendes Schema matchen:
Code: Alles auswählen
Vorname: Peter
Nachname: Muster
Straße: Königsallee
Stadt: Düsseldorf
Oft ist es leider so, dass sowas in den Dateien steht:
Code: Alles auswählen
Vorname: Hans
Werner
Nachname: Muster
sdkgjals
Straße: Kurfürstendamm
Stadt: Berlin
Ich möchte aber nur das haben, was hinter "Vorname: " usw. steht. Ich kann die Sachen nicht einzeln abfragen(Also jeweils Vorname, Name, Straße, Ort), da ich nur dann einen Treffer haben möchte wenn die 4 nacheinander vorkommen, manchmal steht nämlich fälschlicherweise ein einzelner Nachname in der Textdatei.
Mein regulärer Ausdruck sieht so aus:
Code: Alles auswählen
it = re.finditer(r"Vorname: (.*?)\n*Nachname: (.*?)\nStraße: (.*?)\nStadt: (.*?)\n", input)
Wenn ich jetzt mit Option ".dotall" aufrufe findet er zwar auch die Tupel, welche Fierlefanz dazwischen haben, aber eben mit diesem
. Ich habe gedacht ich kann irgendwie sagen, dass danach 1 bis 3 newline-Zeichen kommen mit beliebigem Text dazwischen aber irgendwie kriege ich das nicht hin.
Kann mir jemand helfen? Ich möchte also von dem Beispiel mit Fierlefanz
(Hans, Muster, Kurfürstendamm, Berlin) herauskriegen