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

    你可能感兴趣的文章
    Python——正则表达式
    查看>>
    Python—面向对象2
    查看>>
    Python“和“带整数的运算符
    查看>>
    Python“文件存在“制作目录时出错
    查看>>
    Python“文件存在“制作目录时出错
    查看>>
    Python、IMAP 和 GMail.将消息标记为已查看
    查看>>
    python一个一个获取迭代器的元素
    查看>>
    python一维数组 提取_python – 如何从numpy中的1维数组中提取零维切片
    查看>>
    python三大库之--numpy(一)
    查看>>
    python三大库之--numpy(二)
    查看>>
    python上的字无效字符_标识中的无效字符
    查看>>
    python下用decode和encode 中文转码
    查看>>
    Python下调用Linux的Shell命令
    查看>>
    Python接口自动化测试实战系列
    查看>>
    python下载_安装_配置_以及第一行python程序---python工作笔记009
    查看>>
    Python不协调机器人消息.内容
    查看>>
    Python与C#之间内存共享互传信息
    查看>>
    python与c语言混合编程_你试过C语言和Python一起混合编程吗?两者相加不是已经无敌了!...
    查看>>
    python与excel
    查看>>
    Python与Excel的完美邂逅:深入浅出,手把手教你轻松玩转Excel数据操作
    查看>>