Pandas读取仅在一个计算机上发生的.txt解码错误

时间:2019-02-14 02:40:02

标签: python python-3.x pandas encoding

我有一个逗号分隔的.txt文件,其中包含VétérinaireDé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]

1 个答案:

答案 0 :(得分:0)

您的程序使用默认编码打开文件,但该文件与您尝试打开的文件的内容不匹配。

选项1:将文件内容解码为python字符串对象:

rawdata = open(test_txt, 'rb', encoding='UTF8').read()

选项2:在Sublime Text之类的编辑器中打开csv文件,并以utf-8编码保存,以通过熊猫轻松读取文件。