python pandas保存csv文件時中文亂碼問題

將二維數組保存在本地csv文件中時,打開發現中文亂碼。記錄下解決方法。

hList是我的一個二維數組,利用pandas可以將其保存在本地csv文件中

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

但是打開時發現中文全部保變成了亂碼,應該是編碼問題了。在這裏插入圖片描述

解決的過程中嘗試了在.to_csv時加 encoding="utf_8"或者gbk,還是亂碼。

查資料發現必須要這個樣子才能正確保存:

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

在這裏插入圖片描述
關於"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單獨處理,與文本內容隔離開。
(或許與這個原因有關吧)

就這樣愉快地結束吧
撒花✿✿ヽ(°▽°)ノ✿

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章