2012-06-08 18 views
13

tengo una cadena con escapó de datos comoPython: unescape " xxx"

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

Qué función Python sería unescape, así que iba a conseguir

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

Respuesta

17

Puede decodificar con string-escape.

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

En Python 3.0 no hay string-escape, pero se puede utilizar unicode_escape.

de un objeto bytes:

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

de un objeto Unicode str:

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

¿Cómo se hace esto en Python3? – vy32

+0

Puede usar 'unicode_escape', para objetos' bytes', es lo mismo ... para objetos 'str' que puede hacer:' import codecs; codecs.decode ('\\ x50 \\ 51', "unicode_escape") '... Edité la respuesta, ¿alguien puede revisarla? – berdario

-4

Probar:

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

Debería funcionar.

+3

Por favor, no 'eval'; ¿Qué pasa si raw_data fue la entrada del usuario? –

+4

esto es eva^Hil. – eumiro

7

podría utilizar el códec 'unicode_escape':

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

Alternativamente, 'cadena de escape' le dará un clásico de la cadena Python 2 (bytes en Python 3):

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

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

Cuestiones relacionadas