【问题标题】:Wrong encoding even when specifying encoding to pandas即使为 pandas 指定编码也是错误的编码
【发布时间】:2019-11-19 15:57:19
【问题描述】:

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

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

这是我的代码:

dataset= pd.read_csv("my_file.csv", sep=";", encoding="ISO-8859-1")
print(dataset.loc[0, "my_col"])
>>> "s'il vous plaît"

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

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

【问题讨论】:

  • 给我们您的 csv 文件的副本。谢谢。
  • 如果你愿意的话。它包含“s'il vous plaît”。
  • 我收到此错误:'标签 [0] 不在 [index] 中'
  • open() 出现语法错误...
  • 能否请edit 显示有问题字符串的十六进制转储?另请参阅Stack Overflow character-encoding tag info page

标签: python pandas encoding


【解决方案1】:

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

您应该改用以下内容。

# 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)

或者没有文件对象:

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

【讨论】:

    猜你喜欢
    • 2021-04-09
    • 2017-10-03
    • 2018-06-02
    • 2014-02-24
    • 1970-01-01
    • 2017-03-28
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多