解决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常见文件操作的函数示例代码
Nov 15 Python
Python中关键字is与==的区别简述
Jul 31 Python
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
Apr 25 Python
PyMongo安装使用笔记
Apr 27 Python
Python获取二维矩阵每列最大值的方法
Apr 03 Python
使用python爬取B站千万级数据
Jun 08 Python
python正向最大匹配分词和逆向最大匹配分词的实例
Nov 14 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
Jan 15 Python
python将视频转换为全字符视频
Apr 26 Python
python 类的继承 实例方法.静态方法.类方法的代码解析
Aug 23 Python
Python List列表对象内置方法实例详解
Oct 22 Python
python利用JMeter测试Tornado的多线程
Jan 12 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
php生成唯一数字id的方法汇总
2015/11/18 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
laravel框架与其他框架的详细对比
2019/10/23 PHP
JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)
2008/11/03 Javascript
仿微博字符限制效果实现代码
2012/04/20 Javascript
JS获取网页属性包括宽、高等等
2014/04/03 Javascript
JavaScript实现基于十进制的四舍五入实例
2015/07/17 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
2015/12/10 Javascript
AngularJS表格详解及示例代码
2016/08/17 Javascript
Vue.js每天必学之表单控件绑定
2016/09/05 Javascript
javascript 中的事件委托详解
2016/10/25 Javascript
微信小程序开发的四十个技术窍门总结(推荐)
2017/01/23 Javascript
jQuery插件FusionCharts实现的2D饼状图效果【附demo源码下载】
2017/03/03 Javascript
javascript实现的图片预览功能
2017/03/25 Javascript
H5图片压缩与上传实例
2017/04/21 Javascript
JS库之Particles.js中文开发手册及参数详解
2017/09/13 Javascript
JavaScript时间戳与时间日期间相互转换
2017/12/11 Javascript
React+Webpack快速上手指南(小结)
2018/08/15 Javascript
javascript中this的用法实践分析
2019/07/29 Javascript
wxpython 最小化到托盘与欢迎图片的实现方法
2014/06/09 Python
python检测远程端口是否打开的方法
2015/03/14 Python
Linux下为不同版本python安装第三方库
2016/08/31 Python
用python实现简单EXCEL数据统计的实例
2017/01/24 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
2018/02/07 Python
使用PyQtGraph绘制精美的股票行情K线图的示例代码
2019/03/14 Python
flask框架jinja2模板与模板继承实例分析
2019/08/01 Python
Django中create和save方法的不同
2019/08/13 Python
css3强大的动画效果animate使用说明及浏览器兼容介绍
2013/01/09 HTML / CSS
英国景点门票网站:attractiontix
2019/08/27 全球购物
工商企业管理应届生求职信
2014/05/04 职场文书
课外活动总结范文
2014/07/09 职场文书
综合素质自我评价怎么写
2014/09/14 职场文书
2014年党的群众路线整改措施思想汇报
2014/10/12 职场文书
2015年幼儿园新年寄语
2014/12/08 职场文书
督导岗位职责
2015/02/04 职场文书
什么是css原子化,有什么用?
2022/04/24 HTML / CSS