2011-06-28 18 views
24

Si asigno literales primas Unicode a una variable, puedo leer su valor:Cómo decodificar literales sin procesar unicode a una cadena legible?

>>> s = u'\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e' 
>>> s 
u'\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e' 
>>> print s 
Сообщение отправлено 

Pero cuando ya he asignado valor a una llanura, no cadena Unicode, no puedo:

>>> s = '\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e' 
>>> s 
'\\u0421\\u043e\\u043e\\u0431\\u0449\\u0435\\u043d\\u0438\\u0435 \\u043e\\u0442\\u043f\\u0440\\u0430\\u0432\\u043b\\u0435\\u043d\\u043e' 
>>> print s 
\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e 

¿Cómo puedo decodificarlo y leerlo?

Respuesta

31

Uso del unicode_escape codec:

s.decode('unicode_escape') 
+3

(La razón es que '\ uXXXX' es * verbatim * en un literal de cadena que no es Unicode.) –

+0

Encontré la mejor solución para personajes rusos –

0

Si está recibiendo extraños resultados al decodificar intente seguir

print repr(s).decode('unicode-escape').encode('latin-1') // or encode using some other encoding 

Podría ser que el terminal pitón está usando ASCII predeterminado y no hay símbolo que sale de distancia.

Cuestiones relacionadas