Python3写入数据到csv文件中编码问题

作者: kakarotto | 来源:发表于2017-12-22 12:30 被阅读426次

    本人在用python导出数据到csv的过程中,发现python3.5写中文字符到csv报错,

    错误信息
    UnicodeEncodeError: 'gbk' codec can't encode character '\u25ba' in position 494: illegal multibyte sequence

    这和python2.的解决方法是不一样的,百度之后总结出来供大家互相学习。python3.的应该都可以借鉴。

    1.出现UnicodeEncodeError 说明是Unicode编码时候的问题;
    2.'gbk' codec can’t encode character 说明是将Unicode字符编码为GBK时候出现的问题;

    此时,往往最大的可能就是,本身Unicode类型的字符中,包含了一些无法转换为GBK编码的一些字符。

    解决方法:
    指定文件编码为 gb18030

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

    运行程序,无报错。
    此方法同样适用文件出现乱码的问题。

    开发csv文件,发现每行之间有空行存在,怎么办?
    解决方案:
    增加参数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']
            ])
    

    结果如下


    data.png

    相关文章

      网友评论

        本文标题:Python3写入数据到csv文件中编码问题

        本文链接:https://www.haomeiwen.com/subject/rctzwxtx.html