即使为 pandas 指定编码,编码也是错误的

Be *_*Too 2 python encoding pandas

我有一个包含重音字符的 CSV 文件。我在使用 PyCharm 和 Sublime 打开时检查了编码,它是西方的:Windows 1252 或 ISO-8859-1。

\n\n

我从此 CSV 创建一个 pandas 数据框,然后修改它,并将其导出到 UTF-8 文本文件。我用 PyCharm 和 Sublime Text 检查导出的文件,我不知道为什么导出的文件不是 UTF-8。

\n\n

这是我的代码:

\n\n
dataset= pd.read_csv("my_file.csv", sep=";", encoding="ISO-8859-1")\nprint(dataset.loc[0, "my_col"])\n>>> "s\'il vous pla\xc3\xaet"\n\n# Export data\nwith open("out.txt"), "w", newline=\'\') as f:\n    dataset.to_csv(path_or_buf=f, sep="\\t", header=False, index=False, encoding="utf-8")\n
Run Code Online (Sandbox Code Playgroud)\n\n

当用PyCharm打开“out.txt”时,它显示s\'il vous pla\xef\xbf\xbdt,PyCharm告诉我文件的编码不是UTF-8。

\n

Kul*_*gin 6

您正在使用默认编码以文本模式写入文件对象,这会优先考虑输出编码并使encoding方法中的参数to_csv无用。

您应该使用类似下面的内容。

# Export data
with open("out.txt", "w", newline='', encoding="utf-8") as f:
    dataset.to_csv(path_or_buf=f, sep="\t", header=False, index=False)
Run Code Online (Sandbox Code Playgroud)

或者没有文件对象:

# Export data
dataset.to_csv(path_or_buf="out.txt", sep="\t", header=False, index=False, encoding="utf-8")
Run Code Online (Sandbox Code Playgroud)