阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

308次阅读
没有评论

共计 1814 个字符,预计需要花费 5 分钟才能阅读完成。

导读 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 文件,正确的显示了中文。

    阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

    腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

    代金券:在阿里云专用满减优惠券

    正文完
    星哥玩云-微信公众号
    post-qrcode
     0
    星锅
    版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计1814字。
    转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
    【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
    阿里云-最新活动爆款每日限量供应
    评论(没有评论)
    验证码
    【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

    星哥玩云

    星哥玩云
    星哥玩云
    分享互联网知识
    用户数
    4
    文章数
    19354
    评论数
    4
    阅读量
    8227681
    文章搜索
    热门文章
    星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

    星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

    星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
    星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

    星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

    星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
    再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

    再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

    再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
    飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

    飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

    飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
    星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

    星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

    星哥带你玩飞牛 NAS-7:手把手教你免费内网穿透 -Cloudflare tunnel 前言 大家好,我是星...
    阿里云CDN
    阿里云CDN-提高用户访问的响应速度和成功率
    随机文章
    星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

    星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

    星哥带你玩飞牛 NAS-2:飞牛配置 RAID 磁盘阵列 前言 大家好,我是星哥之前星哥写了《星哥带你玩飞牛 ...
    CSDN,你是老太太喝粥——无齿下流!

    CSDN,你是老太太喝粥——无齿下流!

    CSDN,你是老太太喝粥——无齿下流! 大家好,我是星哥,今天才思枯竭,不写技术文章了!来吐槽一下 CSDN。...
    三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

    三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

      三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
    终于收到了以女儿为原型打印的3D玩偶了

    终于收到了以女儿为原型打印的3D玩偶了

    终于收到了以女儿为原型打印的 3D 玩偶了 前些日子参加某网站活动,获得一次实物 3D 打印的机会,于是从众多...
    2025年11月28日-Cloudflare史诗级事故:一次配置失误,引爆全球宕机

    2025年11月28日-Cloudflare史诗级事故:一次配置失误,引爆全球宕机

    2025 年 11 月 28 日 -Cloudflare 史诗级事故: 一次配置失误,引爆全球宕机 前言 继今...

    免费图片视频管理工具让灵感库告别混乱

    一言一句话
    -「
    手气不错
    免费获得大模型的Api-Key的方法:英伟达提供GLM-4.7、Minimax M2.1模型和GitHub的AI大模型API申请

    免费获得大模型的Api-Key的方法:英伟达提供GLM-4.7、Minimax M2.1模型和GitHub的AI大模型API申请

      免费获得大模型的 Api-Key 的方法:英伟达提供 GLM-4.7、Minimax M2.1 ...
    12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

    12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

    12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...
    三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

    三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

      三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
    浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

    浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

    浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
    星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

    星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

      星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...