1. 程式人生 > >python2.7 csv檔案中文寫入問題

python2.7 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檔案的時候,會讀取當前系統的預設編碼,因為一般都是中文系統,所以預設使用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檔案中寫入中文字元

(完)