解決python中csv文件中文寫入問題


一、前言

一般來說,為了方便,使用python的時候都會使用csv模塊去寫數據到csv文件,但是寫入中文的時候,經常會報錯:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)

我試過直接用utf8編碼打開文件,然后直接將要寫入的字段拼接為逗號分隔的字符串,雖然能解決中文寫入的問題,但是操作很麻煩。而且直接使用excel打開的時候,還是會顯示亂碼。

用excel直接打開編碼utf8編碼的csv文件顯示為亂碼的原因,我推測是excel打開csv文件的時候,會先讀取當前系統的默認編碼作為讀取csv文件的編碼;而因為大家使用的一般都是中文系統,所以excel會使用gbk編碼去讀取文件,導致直接顯示為亂碼。

因此解決的點歸結為一句話:

如何使用csv庫,將中文寫入gbk編碼的csv文件。

 

二、解決

之前用過csv是沒法成功的,后面才查到需要用unicodecsv才行。

直接上例子:

import unicodecsv as ucsv
data = [[u"列1", u"列2"], [u"內容1", u"內容2"]]
with open('test.csv', 'wb') as f:
    w = ucsv.writer(f, encoding = 'gbk')
    w.writerows(data)

直接用文本編輯器打開效果:

微信截圖_20181204140244

用excel直接打開效果:

微信截圖_20181204140303

 

三、參考

1. Python: 在CSV文件中寫入中文字符

(完)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM