Guten Tag,
zur Zeit probiere ich Texte zu extrahieren, leider habe ich dafür kein HTML, sondern nur ein PDF Format.
Die Texte habe ich in eine plain Text Datei umgewandelt und nun möchte ich sie säubern. In meinem Fall heisst das, Tabellendaten und Inhalte, sowie Überschriften entfernen.
Dafür nutze ich eine replace regex Funktion, die alle alle lines mit weniger als 78 Zeichen entfernen soll. Das hat nach stichprobenartiger Begutachtung der Daten gepasst um beides zu entfernen, leider jedoch auch immer den letzten Teil des Absatzes. Ich habe probiert, noch ein lookahead am Ende einzusetzen, um beispielsweise die regex nicht auf lines anzuwenden, die von einem Punkt abgeschlossen werden. Hier ist die regex:
re.sub(r"(?m)(?<!\S\n)^.{1,78}(?=\n)", "", text)(?!\.)
Es sieht so aus, dass die Funktion den Punkt am Ende nicht nimmt, kann mir jemand sagen wo der Fehler liegt?
Entfernen von Überschriften in plain text Dateien
- __blackjack__
- User
- Beiträge: 14069
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@limps: Wie kommst Du darauf das der Punkt am Ende das Problem ist? Die Fehlermeldung markiert das Fragezeichen:
Du hast da einen Teil des regulären Ausdrucks ausserhalb der literalen Zeichenkette die das Muster beschreibt, als wenn das Python-Quelltext wäre.
Code: Alles auswählen
In [196]: re.sub(r"(?m)(?<!\S\n)^.{1,78}(?=\n)", "", text)(?!\.)
Input In [196]
re.sub(r"(?m)(?<!\S\n)^.{1,78}(?=\n)", "", text)(?!\.)
^
SyntaxError: invalid syntax
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
- __blackjack__
- User
- Beiträge: 14069
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@limps: Und bei welchen Daten macht das jetzt nicht das was Du willst? Falls in der Zeile vor einer kurzen Zeile Text steht, dann wird es nicht entfernt, falls da kein Text steht, wird es entfernt. Der Zusatz mit dem Punkt ändert daran nichts.
Man würde gerade bei solchen Heuristiken auch einen Haufen automatisierte Testfälle schreiben, mit allen Sonderfällen die einem so begegnen, damit man sicher ist, dass Änderungen am Code/dem regulären Ausdruck nichts kaputt machen was mal funktioniert hat. Die könntest Du dann mal zeigen.
Man würde gerade bei solchen Heuristiken auch einen Haufen automatisierte Testfälle schreiben, mit allen Sonderfällen die einem so begegnen, damit man sicher ist, dass Änderungen am Code/dem regulären Ausdruck nichts kaputt machen was mal funktioniert hat. Die könntest Du dann mal zeigen.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari