Python3寫入數(shù)據(jù)到csv文件中編碼問題

本人在用python導(dǎo)出數(shù)據(jù)到csv的過程中,發(fā)現(xiàn)python3.5寫中文字符到csv報(bào)錯(cuò),

錯(cuò)誤信息
UnicodeEncodeError: 'gbk' codec can't encode character '\u25ba' in position 494: illegal multibyte sequence

這和python2.的解決方法是不一樣的,百度之后總結(jié)出來供大家互相學(xué)習(xí)。python3.的應(yīng)該都可以借鑒。

1.出現(xiàn)UnicodeEncodeError 說明是Unicode編碼時(shí)候的問題;
2.'gbk' codec can’t encode character 說明是將Unicode字符編碼為GBK時(shí)候出現(xiàn)的問題;

此時(shí),往往最大的可能就是,本身Unicode類型的字符中,包含了一些無法轉(zhuǎn)換為GBK編碼的一些字符。

解決方法:
指定文件編碼為 gb18030

with open('data.csv', 'a+', encoding = 'gb18030') as f:

運(yùn)行程序,無報(bào)錯(cuò)。
此方法同樣適用文件出現(xiàn)亂碼的問題。

開發(fā)csv文件,發(fā)現(xiàn)每行之間有空行存在,怎么辦?
解決方案:
增加參數(shù)newline = ''

with open('data.csv', 'a+', newline = '', encoding = 'gb18030') as f:

示例:

import csv

datas = {'name':'Allen','adress':'beijing','job':'python'}

with open('data.csv', 'a+', newline = '', encoding = 'gb18030') as f:
    csvwriter = csv.writer(f,dialect=("excel"))
    csvwriter.writerow([
             'name', 
             'adress',
             'job'
    ])
    csvwriter.writerow([
            datas['name'],
            datas['adress'],
            datas['job']
        ])

結(jié)果如下


data.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容