2017-03-11 1 views
2

Ich bin neu in Python und versuche, die unten mit regulären Ausdruck oder mit CSV-Reader zu lösen.Python Regulärer Ausdruck mit Escape-, Anführungszeichen- und Trennzeichen

Meine Eingabezeichenfolge ist im folgenden Format:

"some text"|"sample\" name|place\\""|"some other text\\"" 

Erwartete Ausgabe lautet:

'some text','sample" name|place\"','some other text\"' 

Meine Zeichenfolge ein Trennzeichen hat, Zeichen und Anführungszeichen entkommen. Wenn ich den Eingabetext in einer Datei speichern und mit dem CSV-Reader lesen, funktioniert es wie erwartet.

Aber wenn ich den Eingabewert in eine Liste und CSV-Reader verwenden, gibt es nicht die richtige Ausgabe.

Jede Hilfe mit diesem CSV-Reader oder jede Lösung mit Regex wird groß sein. Danke.

Antwort

1

Wenn Sie eine Zeichenkette aus einer Datei lesen, lesen Sie den "rohen" Text, was bedeutet, dass Python keine spezielle Behandlung für Backslash-Zeichen etc. bietet. Um die gleiche Behandlung für Zeichenkettenliterale in Ihrem Code zu erhalten sollte der Zeichenfolge ein 'r' (für roh) vorangestellt werden. Zum Beispiel:

inputText = r'"some text"|"sample\" name|place\\""|"some other text\\""' 
+0

Außerdem erwartet 'csv.reader()' keine Zeichenfolge, sondern einen Iterator über Zeilen. Also benutze 'inputText.splitlines()' oder 'StringIO (inputText)'. – wolfmanx

+0

Danke @jdigital, es funktioniert jetzt. – PLearner

+0

@wolfmanx, ich habe die Methode splitlines() in meinem Code verwendet, sorry, ich habe sie hier verpasst. – PLearner

Verwandte Themen