Python iteriert über Listen und fügt Zeilen ohne Sonderzeichen zum vorherigen Element hinzu

9

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

%Vor%

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:

%Vor%

Lösung

EDIT: Hier ist meine endgültige Lösung auf github , und der vollständige Code hier:

parseScript.py

%Vor%

dat.txt

Hier roh anzeigen

format.dat

%Vor%

out.dat

Hier roh anzeigen

    
Syntactic Fructose 11.06.2015, 02:13
quelle

5 Antworten

0

nicht so elegant, wie Sie es gewünscht haben, aber das funktioniert

%Vor%     
csaladenes 11.06.2015, 02:39
quelle
2

Schreiben Sie im Zweifelsfall Ihren eigenen Generator.

Fügen Sie in itertools.groupby dem Chunk Textgruppen hinzu, die durch Leerzeichen getrennt sind.

%Vor%

Verwendung:

%Vor%

(Wenn diese Felder immer gleich sind, würde ich etwas wie namedtuples anstelle von dict s erstellen)

%Vor%     
roippi 11.06.2015 02:51
quelle
1

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%     
mhawke 11.06.2015 03:28
quelle
1

Ich finde itertools oder regex nicht besonders schön, hier ist eine pure-python-Lösung

%Vor%     
wim 11.06.2015 02:37
quelle
0

Füge einfach etwas zu Zeilen ohne ":" hinzu.

%Vor%

Dann erhalten Sie keinen Fehler.

    
Alex Ivanov 11.06.2015 02:41
quelle

Tags und Links