2016-03-26 8 views
0

Ich habe eine Tabelle mit Daten, in der Regel als Zeichenfolgen im Format "DD \ MM \ YYYY" als 08 \ 09 \ 2014 codiert. Die Funktion, die ich verwende, gibt die Daten als Unicode zurück und ich benutze Python 2.7. Also, ich beginnen mit:Backslash zum Weiterleiten in Unicode-Zeichenfolge in Python

> data_prob_raw 
08\09\2014 

Um die Zeichenfolge in ein Datetime-Objekt (datetime.parser.parse()) zu umwandeln muss ich einen String ohne ‚\‘, aber ich finde keine Möglichkeit, zu entfernen oder Ersetzen Sie dieses problematische Zeichen durch '/'. ich bereits mit Unicode-Codes versucht:

data_prob_raw=data_prob_raw.replace(r'\x81', '/201') 
data_prob_raw=data_prob_raw.replace(u'\x81', '/201') 

Und einfach ein String:

data_prob_raw=data_prob_raw.replace('\201','/201') 

Aber es ändert sich nichts:

08\09\2014 

Decodierung der Zeichenfolge:

data_prob_raw=data_raw_unic.encode('ascii') 

Aber \ 201 geht die 128 ascii Zeichen:

UnicodeDecodeError: 'ascii' codec can't decode byte 0x81 in position 0: ordinal not in range(128) 

Wie kann ich dieses Problem lösen?

Antwort

2

Wenn Sie Daten in eine Datei von Python lesen, sollten Sie eine Escapezeichenfolge erhalten.

Ich habe eine Datei test.txt mit dem Inhalt 01\01\2010

>>> with open(r'C:\users\john\desktop\test.txt') as f: 
     s = f.read() 

>>> s 
'01\\01\\2010' 
>>> s.replace('\\', '/') 
'01/01/2010' 

und ich habe kein Problem mit .replace auf der Saite genannt. Was passiert, ist, dass Sie eine Variable direkt erstellen, die Funktionalität testen und data_prob_raw='08\09\2014' zuweisen, wenn Sie entweder mit data_prob_raw='08\\09\\2014' testen oder das Datum aus der Datei einlesen.

Wie Zondo vorgeschlagen, können Sie auch rohe Stiche wie folgt verwenden; data_prob_raw=r'08\09\2014'. Beachten Sie das vorhergehende r, dass r Python anweist, die umgekehrten Schrägstriche als literale umgekehrte Schrägstriche zu behandeln, anstatt die Escapezeichen zu analysieren.

+0

Die Variable data_prob_raw ist nicht von mir, aber ich suchte so viele Lösungen (direkt die Variable in Python-Shell zu erstellen). Wahrscheinlich bin ich verwirrt. Einfach, jetzt funktioniert es! Vielen Dank –

0

Um einfach einen Backslash in einer Zeichenfolge zu verarbeiten, müssen Sie es einfach zweimal eingeben. Es ist das Escape-Zeichen, daher sollte der folgende Ersetzungscode ausreichen:

data_prob_raw=data_prob_raw.replace('\\', '/') 
0

Sie müssen keinen Ersatz durchführen. datetime kann ein beliebiges Datum Format parsen Sie an:

>>> data = ur'08\09\2014' 
>>> from datetime import datetime 
>>> datetime.strptime(data,ur'%m\%d\%Y') 
datetime.datetime(2014, 8, 9, 0, 0) 
Verwandte Themen