Aqui está o meu código,
for line in open('u.item'):
#read each line
sempre que eu executar este código, ele dá o seguinte erro:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 2892: invalid continuation byte
Eu tentei resolver isso e adicionar um parâmetro extra em open(), o código é parecido;
for line in open('u.item', encoding='utf-8'):
#read each line
Mas mais uma vez dá o mesmo erro. O que devo fazer então! Por favor, ajude-me.
Como sugerido por Mark Ransom, encontrei a codificação certa para esse problema. A codificação foi "ISO-8859-1" portanto substituir open("u.item", encoding="utf-8")
por open('u.item', encoding = "ISO-8859-1")
resolverá o problema.
O seu ficheiro não'na verdade não contém dados codificados utf-8, ele contém alguma outra codificação. Descubra o que é essa codificação e utilize-a na chamada open
.
Na codificação do Windows-1252, por exemplo, o 0xe9
seria o caracter é
.
Se alguém procurar por estes, este é um exemplo para converter um ficheiro CSV em Python 3:
try:
inputReader = csv.reader(open(argv[1], encoding='ISO-8859-1'), delimiter=',',quotechar='"')
except IOError:
pass