2012-06-08 10 views
13

ho una stringa con sfuggito dati comePython: unescape " xxx"

escaped_data = '\\x50\\x51' 
print escaped_data # gives '\x50\x51' 

Quale funzione Python sarebbe unescape così avrei avuto

raw_data = unescape(escaped_data) 
print raw_data # would print "PQ" 

risposta

17

È possibile decodificare con string-escape.

>>> escaped_data = '\\x50\\x51' 
>>> escaped_data.decode('string-escape') 
'PQ' 

In Python 3.0 non c'è string-escape, ma è possibile utilizzare unicode_escape.

da un oggetto bytes:

>>> escaped_data = b'\\x50\\x51' 
>>> escaped_data.decode("unicode_escape") 
'PQ' 

da un oggetto Unicode str:

>>> import codecs 
>>> escaped_data = '\\x50\\x51' 
>>> codecs.decode(escaped_data, "unicode_escape") 
'PQ' 
+0

Come si fa in Python3? – vy32

+0

Puoi usare 'unicode_escape', per l'oggetto' bytes', è lo stesso ... per gli oggetti 'str' che puoi fare:' import codecs; codecs.decode ('\\ x50 \\ 51', "unicode_escape") '... Ho modificato la risposta, qualcuno può rivederla? – berdario

-4

Prova:

eval('"' + raw_data + '"') 

Dovrebbe funzionare.

+3

Ti prego, non 'eval'; cosa succede se raw_data è stato l'input dell'utente? –

+4

questo è eva^Hil. – eumiro

7

è possibile utilizzare il codec 'unicode_escape':

>>> '\\x50\\x51'.decode('unicode_escape') 
u'PQ' 

In alternativa, 'string-escape' vi darà una classica stringa di Python 2 (byte in Python 3):

>>> '\\x50\\x51'.decode('string_escape') 
'PQ' 
3

escaped_data.decode('unicode-escape') aiuta?

Problemi correlati