前言

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

到此这篇关于python写入csv文件时的乱码问题的文章就介绍到这了,更多相关python写入csv文件乱码内容请搜索本网站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本网站!

您可能感兴趣的文章:

  • Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
  • python 写入csv乱码问题解决方法
  • 利用python合并csv文件的方式实例
  • Python中CSV文件(逗号分割)实战操作指南
  • Python批量将csv文件编码方式转换为UTF-8的实战记录