str convertir bytes python unicode scrapy latin

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'')