Hallo, ich arbeite daran eine PDF Datei in eine CSV umzuwandeln. Im Moment klemmt es beim setzten der Trenn-Semikolon. Mittels pdftotext wandel ich die Datei um, lösche die unnötigen Leerzeilen heraus und filter dann nach einem Schlüsselwort die Zeilen die später in die CSV kommen sollen. Das klappt, ich erhalte eine Datei mit genau den Zeilen die ich haben möchte. Aber das seperieren mit Semikolon klappt nicht sauber da die Felder unterschiedlich sind.
Hier mal ein Beispiel wie die Textdatei aufgebaut ist:
Feld1 Feld2 Feld2 Hier steht Text Feld4 Feld5 Feld6 Feld7 Feld10 Feld1 Feld2 Kuschelkissen Hier steht auch Text Feld4 Feld5 Feld6 Feld7 Feld8 Feld9 Feld10 Feld1 Feld2 Feld2 Hier steht Text Feld4 Feld5 Feld6 Feld7 Feld8 Feld9 Feld10 Feld1 Feld2 Hier steht mal mehr Text Feld4 Feld5 Feld6 Feld9 Feld10
Ich habe versucht mittels diesen Python Scriptes das Problem zu lösen:
1 2 3 4 5 6 7 | #!/usr/bin/env python3 import fileinput for line in fileinput.input(openhook=fileinput.hook_encoded("utf-8")): *leading, rest = line.split(maxsplit=3) text, *ending = rest.rsplit(maxsplit=4) print(';'.join((*leading, text, *ending)).encode('utf-8')) |
So das ich von Vorne 3 Leerzeichen in ; umwandel, und von hinten 4 Amer es gibt unterschiedliche Längen, manchmal Besteht Feld2 aus 2 Werten oder hintene gibt es mehrere Felder. Der mittlere Text soll aber stehen bleiben. Bei einer festen Anzahl von Feldern ist das Script super, aber da man nicht genau weiss wie die Quelldatei aufgebaut ist (siehe Beispiel) muss das Script flexibel reagieren und ggf. die leeren Felder auffüllen. Gibt es dafür auch eine Lösung? Ich habe im Moment nicht die geringste Idee wie ich das angehen kann....