我有一个逗号分隔的.txt
文件,其中包含Vétérinaire
和Désinfectant
等法语字符。
import pandas as pd
df = pd.read_csv('somefile.txt', sep=',', header=None, encoding='utf-8')
[Decode error - output not utf-8]
我已经阅读了很多问答文章(包括this),并尝试了许多不同的编码,例如“ latin1
”和“ utf-16
”,但它们没有用。但是,我尝试在具有类似Python设置(所有Python 3.6)的另一台Windows 10计算机上运行完全相同的脚本,在另一台计算机上它运行良好。
编辑:我尝试了this。使用encoding='cp1252'
可以帮助某些我要导入的.txt
文件,但是对于一些.txt
文件,则会出现以下错误。
File "C:\Program_Files_Extra\Anaconda3\lib\encodings\cp1252.py", line 15, in decode
return codecs.charmap_decode(input,errors,decoding_table)
UnicodeDecodeError: 'charmap' codec can't decode byte 0x8f in position 25: character maps to <undefined>
编辑: 尝试从chardet识别编码
import chardet
import pandas as pd
test_txt = 'somefile.txt'
rawdata = open(test_txt, 'rb').read()
result = chardet.detect(rawdata)
charenc = result['encoding']
print (charenc)
df = pd.read_csv(test_txt, sep=',', header=None, encoding=charenc)
print (df.head())
utf-8
[Decode error - output not utf-8]
答案 0 :(得分:0)
您的程序使用默认编码打开文件,但该文件与您尝试打开的文件的内容不匹配。
选项1:将文件内容解码为python字符串对象:
rawdata = open(test_txt, 'rb', encoding='UTF8').read()
选项2:在Sublime Text之类的编辑器中打开csv文件,并以utf-8编码保存,以通过熊猫轻松读取文件。