代码之家  ›  专栏  ›  技术社区  ›  nilsinelabore

tocsv在将panda数据帧写入csv时返回特殊字符

  •  -1
  • nilsinelabore  · 技术社区  · 9 月前

    当试图将pandas数据帧写入csv文件时,我注意到特殊字符,

    例如,Excel的输入数据显示“部门-对账”,写入csv后,显示的不是“部门-对帐”,而是“部门对账”。但当我将csv文件读入Python时,它再次显示“部门-对账”。

    我曾经 df.to_csv('df.csv', index = False )

    为什么会发生这种情况?我该如何修复它?


    其他尝试:

    尝试过1:

    df.to_csv('df.csv', index = False, encoding="utf-8")
    

    和2:

    df = df.astype(str)
    df = df.applymap(str)
    

    希望将数据类型转换为字符串,但结果相同。


    编辑:

    源数据是从一个业务系统中提取的,我刚刚注意到它在 Excel 文件中的“部门对账” csv 文件

    1 回复  |  直到 9 月前
        1
  •  1
  •   Vitalizzare    9 月前

    您可以尝试使用“utf_8_sig”而不是“utf-8”


    utf-8 使用字节作为编码单元;它的字节顺序在所有系统中都是相同的。不存在字节顺序问题,因此它不需要BOM(字节顺序标记),因此当使用 utf-8 编码,用BOM获取文件,它会将BOM视为文件的内容,并且会出现类似于上面的错误。 utf-8-sig “带签名的utf-8” ,意思是windows 10中带有BOM的UTF。所以什么时候 utf-8-sig 读取带有BOM的utf-8文件,它将使BOM单独处理,并与文本内容隔离,这也是我们预期的结果。