本人在用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