我有两个文本文件:
https://www.dropbox.com/s/idk7k5qv2mp3d4p/bad.txt?dl=0 https://www.dropbox.com/s/x27fngacngaglyy/good.txt?dl=0
十六进制编辑器显示 bad.txt 开头为:“FF FE 53 00 79”,Notepad++ 报告该文件为 UCS-2 LE BOM。我相信 utf_16_le 应该对此进行解码,但以下代码错误与 UnicodeDecodeError: 'utf-16-le' 编解码器无法解码位置 2 中的字节 0x53: 截断的数据:
import pandas as pd
df1 = pd.read_csv("good.txt")
df2 = pd.read_csv("bad.txt", encoding="utf_16_le")
我已经尝试了我能找到的所有编解码器,但无法让 pandas 读取 bad.txt。我有很多这样的文件可以在自动上下文中阅读。两个问题:
bad.txt 是否有“问题”?生成文件的程序是否以某种方式错误处理该文件?
如何将其读入 pandas df?如果需要的话,我可以用python代码转换文件吗?数据似乎很好,因为许多其他程序(文本编辑器、Excel 等)都可以解释它,但如何让 pandas 很好地发挥作用?
最佳答案
更新 Pandas 0.20 按预期使用 utf-16 编解码器处理此文件。感谢各位看过的人。
关于python - pandas read_csv 中的编解码器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45272443/