Pergunta

Estou a exportar UTF-8 texto do Excel e eu quero ler e analisar os dados de entrada usando Python. Eu li todas as informações on-line para que eu já tentei isso, por exemplo:

 txtFile = codecs.open( 'halout.txt', 'r', 'utf-8' )
 for line in txtFile:
  print repr( line )

O erro que eu estou recebendo é:

UnicodeDecodeError: 'utf8' codec não pode decodificar bytes 0xFF na posição 0: byte código inesperado

Olhando para o arquivo de texto em um editor Hex, os primeiros valores são FFFE Eu também tentei:

txtFile.seek( 2 )

logo após o 'open', mas que apenas faz com que um erro diferente.

Foi útil?

Solução

Isso é um BOM

EDIT, desde os coments, parece ser um utf-16 bom

codecs.open('foo.txt', 'r', 'utf-16')

deve funcionar.

Outras dicas

Esse arquivo não é UTF-8; é UTF-16LE com um marcador de ordem de byte .

Expandindo o comentário de Johnathan, este código deve ler o arquivo corretamente:

import codecs
txtFile = codecs.open( 'halout.txt', 'r', 'utf-16' )
for line in txtFile:
   print repr( line )

Tente ver se o arquivo excel tem algumas linhas em branco (e, em seguida, tem valores novo), que pode causar o erro inesperado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top