Ecco il mio codice,
for line in open('u.item'):
#read each line
ogni volta che eseguo questo codice dà il seguente errore:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 2892: invalid continuation byte
Ho provato a risolvere questo problema e ad aggiungere un parametro extra in open(), il codice si presenta così;
for line in open('u.item', encoding='utf-8'):
#read each line
Ma di nuovo dà lo stesso errore. cosa dovrei fare allora! Per favore aiutatemi.
Come suggerito da Mark Ransom, ho trovato la giusta codifica per questo problema. La codifica era "ISO-8859-1", quindi sostituendo open("u.item", encoding="utf-8")
con open('u.item', encoding = "ISO-8859-1")
si risolve il problema.
Il tuo file non contiene effettivamente dati codificati in utf-8, contiene qualche altra codifica. Scopri qual è questa codifica e usala nella chiamata open
.
Nella codifica Windows-1252 per esempio il 0xe9
sarebbe il carattere é
.
Se qualcuno li cerca, questo è un esempio per convertire un file CSV in Python 3:
try:
inputReader = csv.reader(open(argv[1], encoding='ISO-8859-1'), delimiter=',',quotechar='"')
except IOError:
pass