python笔记5-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()

```

本文来自企鹅号 - 从零开始学自动化测试媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏申龙斌的程序人生

零基础学编程034:解决一个pandas问题

昨天一位朋友问了一个程序问题:一个csv电子表格文件,里面有不规范数据,如何用pandas的dataframe,将某一列是空值的记录行删掉。 收到了CSV文件,...

2927
来自专栏Python爬虫与数据挖掘

如何利用BeautifulSoup选择器抓取京东网商品信息

昨天小编利用Python正则表达式爬取了京东网商品信息,看过代码的小伙伴们基本上都坐不住了,辣么多的规则和辣么长的代码,悲伤辣么大,实在是受不鸟了。不过小伙伴们...

522
来自专栏xingoo, 一个梦想做发明家的程序员

互联网标准 之 微格式

微格式 微格式其实并不是浏览器或者HTML的某种标准,而是很多人进行起草创建的。它帮助我们更有效的管理前端代码,不仅让人能够读取其中的信息,也能让机器理解(典...

1977
来自专栏大数据文摘

初学指南| 用Python进行网页抓取

2715
来自专栏九彩拼盘的叨叨叨

给新手的 JavaScript 介绍

人与人沟通的语言称为自然语言,人与计算机沟通的语言称为编程语言。编程语言和自然语言的主要不同点是:自然语言表述的内容可以是有多种意思,编程语言表述的内容不会有歧...

762
来自专栏web前端教室

我在工作中的常用代码管理

说是管理其实就是把常用的一些JS方法,自己保存下来,这样的以后的工作中可以比较方便的使用。 哪些方法可以、或是说值得保存呢?(偏见啊)我自己的主观看法就是一些功...

1745
来自专栏IT派

那些神奇的一行 Python 代码

Python 这门语言非常的有趣,不仅可以做高大上的人工智能、大数据、机器学习。还可以用来做 Web、爬虫。还有其它很多的应用。今天我就给大家展示下一行 Pyt...

1114
来自专栏阿凯的Excel

Python读书笔记14(字典的增改删)

上期分享了字典的创建于访问,本期和大家分享的是最重要的营改增政策! 不好意思!串台了,本期和大家分享的是字典的增改删! 一、我们先创建一下新的字典 ? 二、添加...

2708
来自专栏CDA数据分析师

初学指南| 用Python进行网页抓取

引言 从网页中提取信息的需求日益剧增,其重要性也越来越明显。每隔几周,我自己就想要到网页上提取一些信息。比如上周我们考虑建立一个有关各种数据科学在线课程的欢迎程...

1898
来自专栏苍云横渡学习笔记

【day 9】python编程:从入门到实践学习笔记-测试代码(末附练习答案代码)

学习笔记目录 【day 1】python编程:从入门到实践学习笔记-安装、变量和简单数据类型 【day 2】python编程:从入门到实践学习笔记-列表以及其操...

3064

扫码关注云+社区