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

    你可能感兴趣的文章
    PLC发展详解-ChatGPT4o作答+匹尔西
    查看>>
    PLC探针有什么用
    查看>>
    PLC接线详解
    查看>>
    PLC数组的使用(西门子)
    查看>>
    Quarzt定时调度任务
    查看>>
    SpringBoot之AOP详解
    查看>>
    PLC结构体(西门子)
    查看>>
    PLC编程语言ST文本语法的常用数据类型及变量
    查看>>
    PLC通讯方式
    查看>>
    Please install 'webpack-cli' in addition to webpack itself to use the CLI
    查看>>
    Ploly Dash,更新一个Dash应用程序JJJA上的实时人物
    查看>>
    Ploly烛台的定制颜色
    查看>>
    Ploly:如何在Excel中嵌入完全交互的Ploly图形?
    查看>>
    plotloss记录
    查看>>
    Plotly (Python) 子图:填充构面和共享图例
    查看>>
    Plotly 中的行悬停文本
    查看>>
    Plotly 停用 x 轴排序
    查看>>
    Plotly 域变量解释(多图)
    查看>>
    Plotly 绘制表面 3D 未显示
    查看>>
    Plotly-Dash 存在未知问题并创建“加载依赖项时出错“;通过使用 Python-pandas.date_range
    查看>>