python pandas保存csv文件时中文乱码问题

将二维数组保存在本地csv文件中时,打开发现中文乱码。记录下解决方法。

hList是我的一个二维数组,利用pandas可以将其保存在本地csv文件中

import pandas as pd
data = pd.DataFrame(hList)
data.to_csv('data.csv')

但是打开时发现中文全部保变成了乱码,应该是编码问题了。python pandas保存csv文件时中文乱码问题_第1张图片

解决的过程中尝试了在.to_csv时加 encoding="utf_8"或者gbk,还是乱码。

查资料发现必须要这个样子才能正确保存:

import pandas as pd
data = pd.DataFrame(hList)
data.to_csv('data.csv',encoding="utf_8_sig")

python pandas保存csv文件时中文乱码问题_第2张图片
关于"utf_8_sig""utf-8" 的区别:

python中会有一个BOM("ByteOrder Mark") 用来声明该文件的编码信息,以\ufeff 的形式放在文件首行,但python会把它当作文本解析。

"utf-8" 是以字节为编码单元,它的字节顺序在所有系统中都是一样的,没有字节序问题,因此它不需要BOM,所以当用"utf-8"编码方式读取带有BOM的文件时,它会把BOM当做是文件内容来处理, 就会发生错误。

"uft-8-sig"中sig全拼为 signature 也就是"带有签名的utf-8", 因此"utf-8-sig"读取带有BOM的"utf-8文件时"会把BOM单独处理,与文本内容隔离开。
(或许与这个原因有关吧)

就这样愉快地结束吧
撒花✿✿ヽ(°▽°)ノ✿

你可能感兴趣的:(python)