Daten mit Regex extrahieren Python?

Destranix  01.03.2023, 19:36

Und wie soll das Ergebnis aussehen?

Und warum packst du das nicht gleich in einen externen File und lässt dir die Einträge automatisch durch biber oder vergleichbares erstellen?

Henri911 
Beitragsersteller
 01.03.2023, 19:38

Wie man das löst wüste ich. Mein Problem liegt beim Regex

3 Antworten

Es wäre schon gut, wenn Du sagst, was denn nun nicht passt, auf den ersten Blick sieht die Ausgabe ganz okay aus:

{'author': 'Kempken, Frank', 'title': 'Mit Grüner Gentechnik gegen den Hunger?', 'date': '27.01.2009', 'url': 'https://www.bpb.de/shop/zeitschriften/apuz/32210/mit-gruener-gentechnik-gegen-den-hunger/', 'last_viewed': '0'}

Das einzige, was am Ergebnis nicht passt, ist das letzte Datum. Das liegt daran, dass du mit (.+?) nach der kürzestmöglichen Übereinstimmung suchst. Bei den Gruppen davor funktioniert das, weil Regex nach einer Stelle suchen muss, an der danach noch ein Leerzeichen kommt. Bei der letzten Gruppe ist die kürzestmögliche Übereinstimmung aber nur das erste Zeichen des Datums. Deshalb steht da einfach "0".

Um das zu lösen musst du nur das Fragezeichen bei der letzten Gruppe rausnehmen.

Die Punkte, die gematched werden sollen, müssen escaped werden. Und am Ende macht ggf. ein $ Sinn, wenn du das Datum nur "halb" bekommst.

\{(.+?)\} (.+?): „(.+?)“ \[online\]\. (.+?)\. (.+?)\. (.+?)$

https://regex101.com/r/h5o75H/1