Aqui está o meu código,
for line in open('u.item'):
#read each line
sempre que executo esse código, ocorre 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 parece;
for line in open('u.item', encoding='utf-8'):
#read each line
Mas, novamente, dá o mesmo erro. o que devo fazer então! Por favor ajude.
python
python-3.x
character-encoding
SujitS
fonte
fonte
Respostas:
Conforme sugerido por Mark Ransom, encontrei a codificação correta para esse problema. A codificação era "ISO-8859-1", portanto, a substituição
open("u.item", encoding="utf-8")
poropen('u.item', encoding = "ISO-8859-1")
resolverá o problema.fonte
chardet
. Aqui está o one-liner (depoisimport chardet
):chardet.detect(open(in_file, 'rb').read())['encoding']
. Verifique esta resposta para obter detalhes: stackoverflow.com/a/3323810/615422Também funcionou para mim, a ISO 8859-1 vai economizar muito, hahaha, principalmente se estiver usando APIs de reconhecimento de fala
Exemplo:
fonte
Na verdade, seu arquivo não contém dados codificados utf-8, contém algumas outras codificações. Descubra o que é essa codificação e use-a na
open
chamada.No Windows-1252, por exemplo, a codificação
0xe9
seria o caractereé
.fonte
Tente ler isto usando pandas
fonte
Se você estiver usando
Python 2
o seguinte, a solução:Como o
encoding
parâmetro não funcionaopen()
, você receberá o seguinte erro:fonte
Python 2
'ISO-8859-1'
também é conhecido como'latin-1'
ou'latin1'
.Você pode resolver o problema com:
'rb' está lendo o arquivo no modo binário. Leia mais aqui . Espero que isso ajude!
fonte
Isso funciona:
ou:
fonte
Se alguém procurá-los, este é um exemplo para converter um arquivo CSV no Python 3:
fonte
Às vezes, quando
open(filepath)
em que nafilepath
verdade não é um arquivo, o mesmo erro ocorre; primeiro, verifique se o arquivo que você está tentando abrir existe:espero que isso ajude.
fonte
você pode tentar desta maneira:
fonte