博客
关于我
python笔记5-python2写csv文件中文乱码问题
阅读量:468 次
发布时间:2019-03-06

本文共 1258 字,大约阅读时间需要 4 分钟。

前言

在Python2中处理中文编码问题时,常常会遇到诡异的现象。尤其是在存储如列表、元组或字典中的中文字符时,简单地打印输出会显示为Unicode编码,这让人无从下手。面对这些问题,很多开发者可能会陷入迷宫般的编码纠结中。然而,实际上,这些问题的根源可以通过一个简单的决定来解决——尽早地选择Python3作为编程语言。

CSV文件中的中文乱码

在Python2中,处理CSV文件中的中文字符时,可能会遇到乱码问题。以下是常见的两种情况:
  • 写入时的乱码

    当使用csv.writer将包含中文的数据写入文件时,可能会出现乱码现象。这种情况通常是由于Python2内部使用的str类型和unicode类型的编码方式与Windows系统的默认编码gb2312不兼容所致。

  • 读取时的乱码

    当打开CSV文件时,读取到的中文字符可能会呈现乱码状态。这同样是由于编码方式的不兼容所导致的。

  • 编码与解码的基础知识

    在Python2中,字符串的编码方式分为`str`和`unicode`两种。然而,当操作文件时,系统的编码方式往往会干扰这一设置,导致乱码问题。具体来说:
    • 写入时的解决方法

      在写入文件之前,将字符串先转换为utf-8编码,再将其转换为目标编码(如gbk)进行写入。

    • 读取时的解决方法

      反之,当读取文件时,需要先将文件的编码方式(如gbk)转换为utf-8,然后再进行处理。

    解决方案

    针对上述问题,以下是两个常用的解决方案:
  • 手动编码转换(不推荐)

    这种方法虽然可行,但操作繁琐,且容易出错。具体步骤如下:

    # coding:utf-8import csvf = open("xieru1.csv", 'wb')writer = csv.writer(f)data = ["客户名称", "行业类型", "客户联系人", "职位", "联系方式", "邮箱","地址"]for i in data:    writer.writerow(i.decode("utf-8").encode("gbk"))f.close()
  • 使用codecs库(推荐)

    codecs库提供了一种更简单的方式来处理文件的编码转换。具体实现如下:

    # coding:utf-8import csvimport codecsimport sysreload(sys)sys.setdefaultencoding('utf8')f = codecs.open("xx.csv", 'wb', "gbk")writer = csv.writer(f)writer.writerow(["客户名称", "行业类型", "客户联系人", "职位", "联系方式", "邮箱","地址"])writer.writerows([["客户名称", "行业类型", "客户联系人", "职位", "联系方式", "邮箱","地址"], ...])f.close()
  • 通过上述方法,可以有效避免CSV文件中的中文乱码问题。当然,选择第二种方法会更加高效和简洁。

    转载地址:http://rbmbz.baihongyu.com/

    你可能感兴趣的文章
    Plotly:如何使用 Python 对绘图对象条形图进行颜色编码?
    查看>>
    Plotly:如何使用 updatemenus 更新一个特定的跟踪?
    查看>>
    Plotly:如何使用长格式或宽格式的 pandas 数据框制作线图?
    查看>>
    Plotly:如何向烛台图添加交易量
    查看>>
    Plotly:如何在 plotly express 中找到趋势线的系数?
    查看>>
    Plotly:如何在桑基图中设置节点位置?
    查看>>
    Plotly:如何处理重叠的颜色条和图例?
    查看>>
    Plotly:如何手动设置 plotly express 散点图中点的颜色?
    查看>>
    Plotly:如何结合 make_subplots() 和 ff.create_distplot()?
    查看>>
    Plotly:如何绘制累积的“步骤“;直方图?
    查看>>
    Quartz进一步学习与使用
    查看>>
    Plotly条形图-根据正/负值更改颜色-python
    查看>>
    PLSQL developer12安装图解
    查看>>
    PLSQL Developer调试 存储过程和触发器
    查看>>
    PLSQL window操作
    查看>>
    plsql 存储过程 测试
    查看>>
    plsql 安装后database下拉没有东西
    查看>>
    PLSQL_Oracle PLSQL内置函数大全(概念)
    查看>>
    PLSQL_案例优化系列_体验逻辑结构如何影响SQL优化(案例3)
    查看>>
    PLSQL中INDEX BY TABLE的 DELETE操作
    查看>>