Python: Como faço para ler e analisar um arquivo de texto Unicode UTF-8?
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.
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.