XML einlesen - ein Zeichen am Ende scheint zu stören

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
drnicolas
User
Beiträge: 84
Registriert: Sonntag 24. Juli 2016, 10:32

Ich verwende zunächst das Tool "pdftotext" um den Inhalt einer PDF-Datei als Text-datei zu speichern.

Schon die PDF-Datei selber enthält XML-Code und dieser soll dann durch mein Python-Skript eingelesen und geparst werden.

Ich erhalte also eine .txt-Datei mit genau dem richtigen Inhalt. 2Dinge sind aber möglicherweise problematisch:
1. Die Einrückungen aus dem Original-PDF fehlen.
2. DIe Datei schein am ENde irgendein Sonderzeichen zu enthlaten. Es sieht aus wie ein kleines Kästchen mit winzigen Zahlen drin.
Sieht für mich aus wie:

0 0
0 C

Ist es möglich, daß das anschliessende EInlesen deswegen fehlschlägt?
DIe Fehlermeldung verweist jedenfalls auf diese Zeile, column 0
BlackJack

@drnicolas: Das ist immer ein wenig problematisch zu beschreiben wie ein Zeichen aussieht, weil das von der Schriftart und vom System abhängen kann. Ich vermute einfach mal, dass es sich um das Zeichen '\u000c' handelt. Das ist ein Steuerzeichen, nämlich der Seitenvorschub (engl. Form Feed). Es könnte sein, dass das nach jeder Seite aus dem PDF eingefügt wird. Innerhalb von XML darf das allerdings nicht vorkommen:

Code: Alles auswählen

In [5]: etree.fromstring(u'<root>\u000c</root>')
  File "<string>", line unknown
XMLSyntaxError: PCDATA invalid Char value 12, line 1, column 7
Edit: An der Fehlermeldung sieht man übrigens auch ganz gut, dass es sich um einen Seitenvorschub handelt (Wert 12) ohne das man irgendeine Zeichendarstellung beschreiben muss. Fehlermeldungen am besten immer 1:1 kopieren.
drnicolas
User
Beiträge: 84
Registriert: Sonntag 24. Juli 2016, 10:32

Das scheint exakt so zu sein. Immerhin stammt der XML-COde als Extrakt aus einer PDF-Datei!

Stellt sich die Frage ob es einen Weg gibt dieses Steuerzeichen zu unterdrücken (eher nicht - Effekt von pdftotext) oder loszuwerden (aus dem XML-Code).

Kann man irgendwie mit Python solche STeuerzeichen filtern ?
BlackJack

@drnicolas: Natürlich, das wäre eine grundlegende Zeichenkettenoperation.
Antworten