2016-08-03 5 views
-1

Ich analysiere Sätze von CSV-Daten in Python-Tupel, indem ich die Strings über ein begrenzendes Zeichen spalte. Sehr einfaches Zeug.Verhalten der Split-Methode der Java-Zeichenfolge in Python emulieren

Mein Problem ist, dass jedes der Felder möglicherweise leere Strings als gültige Daten enthalten kann. Dies ist in Ordnung, außer wenn das letzte Feld eine leere Zeichenfolge ist. In diesem Fall ist die Länge des resultierenden Tupels um eins kleiner als es sein sollte.

Zum Beispiel angesichts der folgende Zeichenfolge mit Kommas als Trennzeichen:

"2016-08-03,jim,,5146,,ok,,2," 

ich die folgenden Ausgabe wünschen:

["2016-08-03", "jim", "", "5146", "", "ok", "", "2", ""] 

Während eine einfache Lösung für dieses Problem zu finden versuchen, fand ich this answer, in der erläutert wird, wie nachgestellte leere Zeichenfolgen in der Java-Split-Implementierung beibehalten werden. In Python konnte ich jedoch nichts Entsprechendes finden. Gibt es alternative Standardbibliotheksmethoden oder andere einfache Tricks, die dieses Verhalten hervorbringen könnten, oder muss ich dem Skript zusätzliche Logik hinzufügen, um dies zu erreichen?

(Ich weiß, dass es sehr einfach wäre, eine neue Methode zu schreiben, die diese Ausgabe produziert, aber im Interesse von weniger Code ist besser aus Sicht der Wartung, dachte ich, ich würde zuerst überprüfen, ob ich etwas vermisse noch einfacher.)

+2

Können Sie einige Beispieleingaben und erwartete Ausgaben anzeigen? – CoryKramer

+1

Das Verhalten von 'str.split' in der Antwort, auf die Sie verweisen, funktioniert in Python genauso. Haben Sie versucht, "5 | 6 | 7 || 8 | 9 ||" .split ('|') '? Es gibt aus: '['5', '6', '7', '', '8', '9', '', ''] '. Willst du das nicht? – davedwards

+0

@CoryKramer Es wurde der Frage hinzugefügt. – user3351605

Antwort

0

Ich denke, Python gibt direkt die richtige Ausgabe. Haben Sie ein konkretes Beispiel, wo dies nicht der Fall ist? :

x = "5|6|7||8|9||" 

x.split("|") 
Out: ['5', '6', '7', '', '8', '9', '', ''] 
+0

Sie haben Recht Es stellte sich heraus, dass das Programm, das die Daten erzeugte, ein zusätzliches Steuerzeichen hinzufügte und den letzten Wert maskierte, wenn es leer war – user3351605

+0

Großartig, froh zu helfen !! Bitte akzeptieren Sie es als korrekt, wenn Sie die Lösung für Ihr Problem gefunden haben –

Verwandte Themen