tutorial lenguaje español descargar python

python - lenguaje - UnicodeEncodeError: el codec ''ascii'' no puede codificar el carácter u ''/ u2013'' en la posición 3 2: ordinal no está dentro del rango(128)



python wikipedia (5)

Como aquí, str(u''/u2013'') está causando un error, use isinstance(foo,basestring) para verificar unicode / cadena, si no es de tipo cadena base isinstance(foo,basestring) a Unicode y luego aplique la codificación

if isinstance(foo,basestring): foo.encode(''utf8'') else: unicode(foo).encode(''utf8'')

leer más

Estoy analizando un archivo xsl usando xlrd. La mayoría de las cosas están funcionando bien. Tengo un diccionario donde las claves son cadenas y los valores son listas de cadenas. Todas las claves y valores son unicode. Puedo imprimir la mayoría de las claves y valores utilizando el método str() . Pero algunos valores tienen el carácter Unicode - /u2013 para el que recibo el error anterior.

Sospecho que esto está sucediendo porque se trata de Unicode incrustado en Unicode y el intérprete de Python no puede decodificarlo. Entonces, ¿cómo puedo deshacerme de este error?

Gracias por adelantado.


También puede imprimir objetos Unicode, no necesita hacer str () a su alrededor.

Suponiendo que realmente quieres un str:

Cuando haces str (u ''/ u2013'') estás intentando convertir la cadena Unicode en una cadena de 8 bits. Para hacer esto necesita usar una codificación, una asignación entre datos Unicode y datos de 8 bits. Lo que hace str () es que utiliza la codificación predeterminada del sistema, que bajo Python 2 es ASCII. ASCII contiene solo los 127 primeros puntos de código de Unicode, es decir / u0000 a / u007F1. El resultado es que obtiene el error anterior, el códec ASCII simplemente no sabe qué es / u2013 (es un guión largo, por cierto).

Por lo tanto, debe especificar qué codificación desea utilizar. Los más comunes son ISO-8859-1, más comúnmente conocido como Latin-1, que contiene los 256 primeros puntos de código; UTF-8, que puede codificar todos los puntos de código mediante el uso de codificación de longitud variable, CP1252 que es común en Windows y varias codificaciones en chino y japonés.

Los usas así:

u''/u2013''.encode(''utf8'')

El resultado es una cadena que contiene una secuencia de bytes que es la representación de uTF8 del carácter en cuestión:

''/xe2/x80/x93''

Y puedes imprimirlo:

>>> print ''/xe2/x80/x93'' –


También puedes probar esto para obtener el texto.

foo.encode(''ascii'', ''ignore'')


Yo tuve el mismo problema. Este trabajo bien para mí:

str(objdata).encode(''utf-8'')


para mi esto funciona

unicode (datos) .encode (''utf-8'')