解决Python2.7读写文件中的中文乱码问题


Posted in Python onApril 12, 2018

Python2.7对于中文编码的问题处理的并不好,这几天在爬数据的时候经常会遇到中文的编码问题。但是本人对编码原理不了解,也没时间深究其中的原理。在此仅从应用的角度做一下总结,

1.设置默认编码

在Python代码中的任何地方出现中文,编译时都会报错,这时可以在代码的首行添加相应说明,明确utf-8编码格式,可以解决一般情况下的中文报错。当然,编程中遇到具体问题还需具体分析啦。

#encoding:utf-8
或者
# -*- coding: utf-8 -*- 
import sys 
reload(sys) 
sys.setdefaultencoding('utf8') # 设置默认编码格式为'utf-8'

2.文件读写

文件读写中遇到中文,通常不会报错,但是最后运行结果显示乱码,给后续处理带来不便。

2.1 读文件

读文件时,如果文件路径、文件名中有中文,需要使用unicode函数将其编码为'utf-8'格式,然后再进行正常的文件读取。以我常用的pandas的read_csv函数为例,使用如下代码可以成功地读取名为“POI总表”的csv文件,保存在DataFrame数据类型的poi_list。

import pandas as pd
inpath = 'C:\\POI总表.csv'
**path = unicode(inpath, 'utf-8')**
poi_list = pd.read_csv(path)

2.2 写文件

文件名有中文,文件名乱码

当想要将程序运行结果保存到文本文件时,文本文件的命名中如果有中文,不做处理文件名会出现乱码。利用unicode函数进行编码可解。unicode(‘中文.csv','utf-8')

文件内容有中文,excel打开内容乱码

如果将包含中文的结果输出到csv文件,一般默认使用Excel打开文件时,文件内容会出现乱码,而使用文本编辑器打开不会乱码。这是因为Excel默认的编码方式为‘GBK‘,而文本编辑器默认的格式为‘utf-8'。使用codecs包在创建文件后添加语句f.write(codecs.BOM_UTF8)可解

name='语文'
f = open(name+'.csv','w')
f.write('123,语文')
f.close()
#修改编码
import codecs
f = open(**unicode(name+'.csv','utf-8')**,'w') # 文件名不乱码
**f.write(codecs.BOM_UTF8) # excel打开内容不乱码的核心语句**
f.write('123,语文')
f.close()

输出结果:

#文件名:璇???.csv
#Excel打开  123 璇???
#文本编辑器打开 123,语文
#改编码后
#文件名:语文.csv
#Excel打开  123 语文
#文本编辑器打开 123,语文

以上这篇解决Python2.7读写文件中的中文乱码问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python去掉字符串中空格的方法
Mar 11 Python
Python中设置变量访问权限的方法
Apr 27 Python
PyQt5利用QPainter绘制各种图形的实例
Oct 19 Python
浅谈Python2获取中文文件名的编码问题
Jan 09 Python
python实现求两个字符串的最长公共子串方法
Jul 20 Python
用python实现k近邻算法的示例代码
Sep 06 Python
将python文件打包成EXE应用程序的方法
May 22 Python
pandas dataframe的合并实现(append, merge, concat)
Jun 24 Python
python两个_多个字典合并相加的实例代码
Dec 26 Python
解决pycharm中导入自己写的.py函数出错问题
Feb 12 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
Jun 24 Python
Python sklearn中的.fit与.predict的用法说明
Jun 28 Python
python 实现对文件夹内的文件排序编号
Apr 12 #Python
pandas数值计算与排序方法
Apr 12 #Python
python搭建服务器实现两个Android客户端间收发消息
Apr 12 #Python
python pandas 组内排序、单组排序、标号的实例
Apr 12 #Python
Python实现简单http服务器
Apr 12 #Python
Python实现一个服务器监听多个客户端请求
Apr 12 #Python
python使用socket创建tcp服务器和客户端
Apr 12 #Python
You might like
JAVA/JSP学习系列之七
2006/10/09 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
2011/06/24 PHP
JavaScript取得鼠标绝对位置程序代码介绍
2012/09/16 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
javascript中的parseInt和parseFloat区别
2013/07/12 Javascript
struts2+jquery组合验证注册用户是否存在
2014/04/30 Javascript
nodejs事件的监听与触发的理解分析
2015/02/12 NodeJs
学习JavaScript设计模式(多态)
2015/11/25 Javascript
基于JQuery实现图片上传预览与删除操作
2016/05/24 Javascript
javascript实现消灭星星小游戏简单版
2016/11/15 Javascript
无阻塞加载js,防止因js加载不了影响页面显示的问题
2016/12/18 Javascript
jQuery操作json常用方法示例
2017/01/04 Javascript
详解Vue-Cli 异步加载数据的一些注意点
2017/08/12 Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
2017/08/17 Javascript
分分钟学会vue中vuex的应用(入门教程)
2017/09/14 Javascript
详解webpack中的hash、chunkhash、contenthash区别
2018/01/05 Javascript
如何将HTML字符转换为DOM节点并动态添加到文档中详解
2018/08/19 Javascript
使用ng-packagr打包Angular的方法示例
2018/09/21 Javascript
jQuery表单元素过滤选择器用法实例分析
2019/02/20 jQuery
[42:52]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python opencv3实现人脸识别(windows)
2018/05/25 Python
Python 元组操作总结
2019/09/18 Python
python获取引用对象的个数方式
2019/12/20 Python
python json load json 数据后出现乱序的解决方案
2020/02/27 Python
python 双循环遍历list 变量判断代码
2020/05/04 Python
利用python对mysql表做全局模糊搜索并分页实例
2020/07/12 Python
python 5个顶级异步框架推荐
2020/09/09 Python
h5使用canvas画布实现手势解锁
2019/01/04 HTML / CSS
学雷锋标语
2014/06/25 职场文书
大三学生学年自我鉴定
2014/09/12 职场文书
机关领导干部作风整顿整改措施
2014/09/19 职场文书
2014年计划生育工作总结
2014/11/14 职场文书
2014年党风廉政建设工作总结
2014/11/19 职场文书
2015年学校办公室主任工作总结
2015/07/20 职场文书
孩子满月酒答谢词
2015/09/30 职场文书
《黑岩★★射手 DAWN FALL》BD发售宣传CM公开
2022/04/04 日漫