如何在pandas数据帧中首先应用“utf-8”来打开csv / txt文件?

时间:2016-07-28 20:32:27

标签: encoding text-files python-3.5

我正在尝试从特定文件路径中的文本文件导入数据,但收到错误'utf-8' codec can't decode byte 0xa5 in position 18: invalid start byte

我的问题是,无论如何我可以对所有文本文件(大约20个其他)应用“utf-8”编码我最终必须打开所以我可以防止上述错误?

代码:

import pandas as pd
filelist = [r'D:/file1',r'D:/file2']
print (len((pd.concat([pd.read_csv(item, names=[item[:-4]]) for item in filelist],axis=1))))
如果我做错了,

也会接受任何建议。

提前谢谢你。

1 个答案:

答案 0 :(得分:1)

不知道在python中自动将编码转换为utf-8的解决方案。

或者,您可以找出编码的内容,并相应地阅读。然后在utf-8中写入文件。

this solution适用于我的文件(信用maxnoe

import chardet
import pandas as pd

with open('filename.csv', 'rb') as f:
    result = chardet.detect(f.read())  # or readline if the file is large

pd.read_csv('filename.csv', encoding=result['encoding'])

不要忘记pip install chardet

如果你现在用pd.to_csv()写文件,pandas默认是用utf-8编码