Python2写csv文件中文乱码问题及解决方法

 更新时间:2022年11月23日 11:04:02   作者:永恒de记忆  
python2最大的坑在于中文编码问题,遇到中文报错首先加u,再各种encode、decode,这篇文章给大家介绍Python2写csv文件中文乱码问题及解决方法,感兴趣的朋友跟随小编一起看看吧

前言

python2最大的坑在于中文编码问题,遇到中文报错首先加u,再各种encode、decode。
当list、tuple、dict里面有中文时,打印出来的是Unicode编码,这个是无解的。
对中文编码纠结的建议尽快换python3吧,python2且用且珍惜!

csv中文乱码

1.open打开csv文件,用writer写入带有中文的数据时

writer写入单行writers写入多行

# coding:utf-8
import csv
 
f = open("xieru.csv", 'wb')
writer = csv.writer(f)
 
# 需要写入的信息
data = ["客户名称", "行业类型", "客户联系人", "职位", "联系方式", "邮箱","地址"]
 
writer.writerow(data)       # 写入单行
# writer.writerows(datas)    # 写入多行
 
f.close()

2.打开csv文件,发现写入的中文乱码了

编码与解码

1.中文乱码问题一直是python2挥之不去的痛,这里先弄清楚乱码原因:

  • python2本身内部代码的编码有str和unicode两种编码
  • 然而文件写入到windows系统时候,windows上的是gb2312编码

所以就导致了乱码问题

2.先把python里面的中文字符串decode成utf-8,再encode为gbk编码

data.decode('utf-8').encode('gbk')

3.如果是读取csv文件的话,就反过来:

data.decode('gbk').encode('utf-8')

解决方案

1.方案一:对字符串转换编码(这个太麻烦了,不推荐)

# coding:utf-8
import csv
 
f = open("xieru1.csv", 'wb')
writer = csv.writer(f)
 
# 需要写入的信息
data = ["客户名称", "行业类型", "客户联系人", "职位", "联系方式", "邮箱","地址"]
 
a = []
for i in data:
    a.append(i.decode("utf-8").encode("gbk"))
 
writer.writerow(a)           # 写入单行
# writer.writerows(datas)    # 写入多行
 
f.close()

2.方法二:用codecs提供的open方法来指定打开的文件的语言编码,它会在读取的时候自动转换为内部unicode (推荐)

# coding:utf-8
import csv, codecs
 
import sys
reload(sys)
sys.setdefaultencoding('utf8')
 
f = codecs.open("xx.csv", 'wb', "gbk")
writer = csv.writer(f)
writer.writerow(["客户名称", "行业类型", "客户联系人", "职位", "联系方式", "邮箱","地址"])
 
# 多组数据存放list列表里面
datas = [
    ["客户名称", "行业类型", "客户联系人", "职位", "联系方式", "邮箱","地址"],
    ["客户名称", "行业类型", "客户联系人", "职位", "联系方式", "邮箱","地址"],
    ["客户名称", "行业类型", "客户联系人", "职位", "联系方式", "邮箱","地址"],
       ]
 
writer.writerows(datas)
f.close()

python写入csv文件时的乱码问题

今天在使用python的csv库将数据写入csv文件时候,出现了中文乱码问题,解决方法是在写入文件前,先指定utf-8编码,如下:

import csv
import codecs
if __name__ == "__main__":
    file_name = "data.csv"
    with open(file_name, "wb") as f:
        f.write(codecs.BOM_UTF8)
        csv_write = csv.writer(f)
        csv_write.writerows([["姓名", "年龄"], ["张三", 18]])

得到csv文件,正确的显示了中文。

到此这篇关于python写入csv文件时的乱码问题的文章就介绍到这了,更多相关python写入csv文件乱码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 超详细的Python安装第三方库常用方法汇总

    超详细的Python安装第三方库常用方法汇总

    电脑网络有点问题,直接安装第三方库的时候出现了各种问题,所以在这篇文章里记录一下各种安装第三方库的方法吧,下面这篇文章主要给大家介绍了关于Python安装第三方库常用方法的相关资料,需要的朋友可以参考下
    2022-04-04
  • python如何压缩新文件到已有ZIP文件

    python如何压缩新文件到已有ZIP文件

    这篇文章主要为大家详细介绍了python如何压缩新文件到已有ZIP文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • 用Python实现一个简单的线程池

    用Python实现一个简单的线程池

    这篇文章主要介绍了用Python实现一个简单的线程池,通过这个小程序可以帮助更好地理解Python中线程的运行机制,需要的朋友可以参考下
    2015-04-04
  • python实现kNN算法识别手写体数字的示例代码

    python实现kNN算法识别手写体数字的示例代码

    这篇文章主要介绍了python实现kNN算法识别手写体数字的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • python selenium 无界面浏览器的实现

    python selenium 无界面浏览器的实现

    有时我们不想让浏览器窗口跳出来,而是想在后台进行操作,这就需要用到无界面浏览器,本文主要介绍了python selenium 无界面浏览器的实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • python使用response.read()接收json数据的实例

    python使用response.read()接收json数据的实例

    今天小编就为大家分享一篇python使用response.read()接收json数据的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python数据分析之双色球中蓝红球分析统计示例

    Python数据分析之双色球中蓝红球分析统计示例

    这篇文章主要介绍了Python数据分析之双色球中蓝红球分析统计,结合实例形式较为详细的分析了Python针对双色球蓝红球中奖数据分析的相关操作技巧,需要的朋友可以参考下
    2018-02-02
  • 浅析Python打包时包含静态文件处理方法

    浅析Python打包时包含静态文件处理方法

    这篇文章主要介绍了Python打包时包含静态文件处理方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Python 使用SFTP和FTP实现对服务器的文件下载功能

    Python 使用SFTP和FTP实现对服务器的文件下载功能

    这篇文章主要介绍了Python 使用SFTP和FTP实现对服务器的文件下载功能,本文通过实例代码给大家介绍的非常想详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Pyqt5自适应布局实例

    Pyqt5自适应布局实例

    今天小编就为大家分享一篇Pyqt5自适应布局实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12

最新评论