Ho un foglio di calcolo Excel che sto leggendo che contiene alcuni segni £.UnicodeEncodeError: il codec 'ascii' non può codificare il carattere u ' xa3'
quando cerco di leggerlo in utilizzando il modulo XLRD, ottengo il seguente errore:
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)
Se riscrivo questo per x.encode ('utf-8') smette di generare un errore, ma sfortunatamente quando scrivo i dati da qualche altra parte (come latin-1), i segni £ sono tutti diventati confusi.
Come posso risolvere questo problema e leggere correttamente i segni £?
--- UPDATE ---
Una specie lettori hanno suggerito che non ho bisogno di decodificare affatto, o che io posso solo codificare al Latin-1 quando ho bisogno di. Il problema con questo è che ho bisogno di scrivere i dati in un file CSV alla fine, e sembra di opporsi alle stringhe non elaborate.
Se non codificare o decodificare i dati a tutti, allora questo accade (dopo ho aggiunto la stringa in un array di nome articoli):
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)
ottengo lo stesso errore anche se ho decommentare la linea Latin-1.
Sei '.decode' -ing due volte? – katrielalex
Non credo. La riga precedente è x = table.cell_value (row, col), dal modulo xlrd, però - forse sta facendo qualcosa di divertente? – AP257