Tengo una hoja de cálculo de Excel que estoy leyendo que contiene algunos signos de £.UnicodeEncodeError: el códec 'ascii' no puede codificar el carácter u ' xa3'
cuando trato de leerlo en el uso del módulo de XLRD, me sale el siguiente error:
x = table.cell_value(row, col)
x = x.decode("ISO-8859-1")
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa3' in position 0: ordinal not in range(128)
Si vuelvo a escribir esto a x.encode ('UTF-8') que deje de tirar un error, pero desafortunadamente cuando escribo los datos en otro lugar (como latin-1), los signos de £ se vuelven confusos.
¿Cómo puedo solucionar esto y leer los signos £ correctamente?
--- --- ACTUALIZACIÓN
Una especie lectores han sugerido que no necesito de decodificarlo en absoluto, o que sólo puede codificar a Latin-1 cuando necesito. El problema con esto es que necesito escribir los datos en un archivo CSV eventualmente, y parece que se opone a las cadenas sin formato.
Si no codificar o decodificar los datos en absoluto, entonces esto sucede (después de haber añadido la cadena en una matriz llamados elementos):
for item in items:
#item = [x.encode('latin-1') for x in item]
cleancsv.writerow(item)
File "clean_up_barnet.py", line 104, in <module>
cleancsv.writerow(item)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2022' in position 43: ordinal not in range(128)
me sale el mismo error incluso si eliminar el comentario de la línea Latin-1.
¿Está '.decode'-ing dos veces? – katrielalex
No lo creo. Sin embargo, la línea anterior es x = table.cell_value (row, col), del módulo xlrd, ¿quizás eso está haciendo algo gracioso? – AP257