convertir - string to unicode python
Convertir una cadena latina a unicode en python (2)
Estoy trabajando o scrapy, eliminé algunos sitios y almacené los elementos de la página raspada en archivos json, pero algunos de ellos contienen el siguiente formato.
l = ["Holding it Together",
"Fowler RV Trip",
"S/u00e9n/u00e9gal - Mali - Niger","H/u00eatres et /u00e9tang",
"Coll/u00e8ge marsan","N/u00b0one",
"Lines through the days 1 (Arabic) /u0633/u0637/u0648/u0631 /u0639/u0628/u0631 /u0627/u0644/u0623/u064a/u0627/u0645 1",
"/u00cdndia, Tail/u00e2ndia & Cingapura"]
Puedo esperar que la lista tenga un formato diferente, pero quiero convertir eso y almacenar las cadenas en la lista con sus nombres originales, como a continuación
l = ["Holding it Together",
"Fowler RV Trip",
"Lines through the days 1 (Arabic) سطور عبر الأيام 1 | شمس الدين خ | Blogs" ,
"Índia, Tailândia & Cingapura "]
Gracias por adelantado...........
Quiero convertir eso y almacenar las cadenas en la lista con sus nombres originales, como a continuación
Cuando se serializa en JSON, puede haber un indicador que le permite desactivar el escape de caracteres no ASCII a /u
secuencias. Si está utilizando el módulo json
biblioteca estándar, es ensure_ascii
:
>>> print json.dumps(u''Índia'')
"/u00cdndia"
>>> print json.dumps(u''Índia'', ensure_ascii= False)
"Índia"
Sin embargo, tenga en cuenta que con esa medida de seguridad eliminada, ahora debe ser capaz de tratar con caracteres que no sean ASCII de manera correcta, o obtendrá un montón de UnicodeError
. Por ejemplo, si está escribiendo el JSON en un archivo, debe codificar explícitamente la cadena Unicode para el juego de caracteres que desee (por ejemplo, UTF-8).
j= json.dumps(u''Índia'', ensure_ascii= False)
open(''file.json'', ''wb'').write(j.encode(''utf-8''))
Tienes cadenas de bytes que contienen escapes Unicode. Puede convertirlos a unicode con el códec unicode_escape
:
>>> print "H/u00eatres et /u00e9tang".decode("unicode_escape")
Hêtres et étang
Y puedes codificarlo de nuevo a cadenas de bytes:
>>> s = "H/u00eatres et /u00e9tang".decode("unicode_escape")
>>> s.encode("latin1")
''H/xeatres et /xe9tang''
Puede filtrar y decodificar cadenas no unicode como:
for s in l:
if not isinstance(s, unicode):
print s.decode(''unicode_escape'')