python2.7 csv檔案中文寫入問題
阿新 • • 發佈:2018-12-04
一、前言
一般來說使用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)
直接用文字編輯器開啟效果:
用excel直接開啟效果:
三、參考
(完)