博客
关于我
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/

    你可能感兴趣的文章
    Postman还能做Mock?又学了一招!
    查看>>
    Postman还能做Mock?又学了一招!
    查看>>
    postman进行http接口测试
    查看>>
    Postman高阶技能:Collection集合批量运行!
    查看>>
    postMessage跨标签页共享数据
    查看>>
    QImage对一般图像的处理
    查看>>
    post为什么会发送两次请求?
    查看>>
    Post表单提交TextArea的值出现转译乱码问题 - Spring MVC处理表单提交
    查看>>
    Power BI 中的 Python 可视化需要什么设置?任何特定的 matplotlib 包版本或系统设置?
    查看>>
    Power BI:如何在 Power Query 编辑器中将 Python 与多个表一起使用?
    查看>>
    power english (3) main text -emotion mastery - focus
    查看>>
    POWER ENGLISH (6) - MODEL
    查看>>
    power english (1) —— passion
    查看>>
    Power English (1) 原文
    查看>>
    power English (3)原文
    查看>>
    POWER ENGLISH(7)- repetition
    查看>>
    SpringBoot中集成SpringBatch详细解析与实战示例(CSV文件读取十万条数据进行业务处理后写入Mysql数据库)
    查看>>
    powerbi 一张表在另外一张表中出现的数量_PowerBi之初步学习笔记
    查看>>
    QGIS怎样设置简体中文以及新建可编辑的多边形的图层
    查看>>
    PowerBuilder 使用自定义事件触发键盘Enter事件
    查看>>