python笔记5-python2写csv文件中文乱码问题
2017-12-08 20:55
239 查看
前言
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接口自动化已出书-------------------------
全书购买地址 https://yuedu.baidu.com/ebook/585ab168302b3169a45177232f60ddccda38e695
相关文章推荐
- python写入csv文件中文乱码问题解决办法
- 【转】python csv 格式文件 中文乱码问题解决方法
- python csv 格式文件 中文乱码问题解决方法
- 在Mac系统下Excel转csv文件中文乱码问题解决
- 关于用EXCEL打开".csv"文件中文会出现乱码问题
- 在Mac系统下Excel转csv文件中文乱码问题解决
- Python处理MLDonkey 下载中文文件乱码问题
- 在Mac系统下Excel转csv文件中文乱码问题解决
- python读文件open file 中文乱码问题
- 【Python】遍历某目录下的所有文件夹与文件的路径、输出中文乱码问题
- python读取csv文件中文乱码
- Python模块函数:os.listdir 打印Win7目录中的文件-中文乱码问题
- java从数据库导出.csv文件及中文乱码问题
- [Python] 中文路径和中文文本文件乱码问题
- python2学习笔记之mysql连接,中文乱码的解决和文件api的使用
- 解决python中用zipfile解压缩文件时中文文件名乱码的问题
- Python处理MLDonkey 下载中文文件乱码问题
- 用python写文件输出,解决输出的中文为乱码问题
- PHP自带函数fgetcsv读取csv文件中文乱码问题解决办法
- Python处理MLDonkey 下载中文文件乱码问题 (2)