caracteres - unicode escape python
Cadena de Python para Unicode (3)
Posible duplicado:
¿Cómo trato una cadena ASCII como unicode y desinstalo los caracteres escapados en python?
Cómo convertir secuencias de escape Unicode a caracteres Unicode en una cadena de Python
Tengo una cadena que contiene caracteres Unicode, por ejemplo, /u2026
etc. De alguna manera, no se me recibe como unicode
, pero se recibe como str
. ¿Cómo lo convierto de nuevo a Unicode?
>>> a="Hello/u2026"
>>> b=u"Hello/u2026"
>>> print a
Hello/u2026
>>> print b
Hello…
>>> print unicode(a)
Hello/u2026
>>>
Así que claramente unicode(a)
no es la respuesta. Entonces, ¿qué es?
Decodifícalo con el códec de unicode-escape
:
>>> a="Hello/u2026"
>>> a.decode(''unicode-escape'')
u''Hello/u2026''
>>> print _
Hello…
Esto se debe a que para una cadena no unicode, /u2026
no se reconoce, sino que se trata como una serie literal de caracteres (para decirlo más claramente, ''Hello//u2026''
). Necesita decodificar los escapes, y el códec de unicode-escape
puede hacer eso por usted.
Tenga en cuenta que puede hacer que unicode
reconozca de la misma manera especificando el argumento del códec:
>>> unicode(a, ''unicode-escape'')
u''Hello/u2026''
Pero el modo a.decode()
es más agradable.
Unicode escapes solo funciona en cadenas Unicode, por lo que este
a="/u2026"
es en realidad una cadena de 6 caracteres: ''/', ''u'', ''2'', ''0'', ''2'', ''6''.
Para hacer unicode fuera de esto, use decode(''unicode-escape'')
:
a="/u2026"
print repr(a)
print repr(a.decode(''unicode-escape''))
## ''//u2026''
## u''/u2026''
>>> a="Hello/u2026"
>>> print a.decode(''unicode-escape'')
Hello…