Ich frage mich, ob jemand eine Art hacky / coole Lösung für dieses Problem hat. Ich habe eine Textdatei wie folgt:
%Vor% Ich habe also einige Blöcke, die alle Zeilen enthalten, die in ein Diktat aufgeteilt werden können, und einige, die das nicht können. Wie kann ich Linien ohne das Zeichen :
nehmen und sie mit der vorherigen Linie verbinden? Hier ist, was ich gerade mache
Aber ich bekomme natürlich einen Fehler, weil der zweite Chunk eine Zeile ohne das :
-Zeichen hat. Also wollte ich, dass mein Diktat nach korrekter Aufteilung so aussieht:
EDIT: Hier ist meine endgültige Lösung auf github , und der vollständige Code hier:
parseScript.py
%Vor%dat.txt
format.dat
%Vor%out.dat
nicht so elegant, wie Sie es gewünscht haben, aber das funktioniert
%Vor%Schreiben Sie im Zweifelsfall Ihren eigenen Generator.
Fügen Sie in itertools.groupby
dem Chunk Textgruppen hinzu, die durch Leerzeichen getrennt sind.
Verwendung:
%Vor% (Wenn diese Felder immer gleich sind, würde ich etwas wie namedtuples
anstelle von dict
s erstellen)
Hier ist etwas, das alle Ihre Anforderungen anspricht. Es behandelt das Verbinden mehrerer Zeilen, ignoriert Leerzeilen und ignoriert Junk-Zeilen, die nicht in einem Block angezeigt werden. Es wird als Generator implementiert, der jedes Wörterbuch nach Fertigstellung vervollständigt.
%Vor%Wenn mit diesen Daten ausgeführt:
%Vor% %Vor%Sie können das Los als Liste aufnehmen:
%Vor%Füge einfach etwas zu Zeilen ohne ":" hinzu.
%Vor%Dann erhalten Sie keinen Fehler.
Tags und Links python python-2.7