解决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中何种情况下需要使用断言
Apr 01 Python
Python基础之getpass模块详细介绍
Aug 10 Python
Django JWT Token RestfulAPI用户认证详解
Jan 23 Python
计算机二级python学习教程(3) python语言基本数据类型
May 16 Python
关于Python内存分配时的小秘密分享
Sep 05 Python
Python 解码Base64 得到码流格式文本实例
Jan 09 Python
tensorflow 实现从checkpoint中获取graph信息
Feb 10 Python
Python 爬虫的原理
Jul 30 Python
Windows下PyCharm配置Anaconda环境(超详细教程)
Jul 31 Python
python matplotlib库的基本使用
Sep 23 Python
Pytorch 中net.train 和 net.eval的使用说明
May 22 Python
68行Python代码实现带难度升级的贪吃蛇
Jan 18 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
linux系统下php安装mbstring扩展的二种方法
2014/01/20 PHP
php实现简单文件下载的方法
2015/01/30 PHP
PHP设计模式之工厂模式与单例模式
2016/09/28 PHP
Yii 2中的load()和save()示例详解
2017/08/03 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
2019/05/13 PHP
一个可以显示阴历的JS代码
2007/03/05 Javascript
JavaScript 应用类库代码
2008/06/02 Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
JS在TextArea光标位置插入文字并实现移动光标到文字末尾
2013/06/21 Javascript
javascript中style.left和offsetLeft的用法说明
2014/03/07 Javascript
JavaScript关闭当前页面(窗口)不带任何提示
2014/03/26 Javascript
js Calender控件使用详解
2015/01/05 Javascript
基于JS实现EOS隐藏错误提示层代码
2016/04/25 Javascript
javascript和jQuery实现网页实时聊天的ajax长轮询
2016/07/20 Javascript
JS实现json对象数组按对象属性排序操作示例
2018/05/18 Javascript
将Vue组件库更换为按需加载的方法步骤
2020/05/06 Javascript
[02:43]中国五虎出征TI3视频
2013/08/02 DOTA
[01:27]DOTA2电竞之夜 今夜共饮庆功酒
2014/08/02 DOTA
[40:55]Liquid vs LGD 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Tornado服务器中绑定域名、虚拟主机的方法
2014/08/22 Python
星球大战与Python之间的那些事
2016/01/07 Python
python+Django+apache的配置方法详解
2016/06/01 Python
使用python进行文本预处理和提取特征的实例
2018/06/05 Python
基于Python List的赋值方法
2018/06/23 Python
Python处理时间日期坐标轴过程详解
2019/06/25 Python
用Python解数独的方法示例
2019/10/24 Python
Python爬虫实例——爬取美团美食数据
2020/07/15 Python
英国No.1体育用品零售商:SportsDirect.com
2019/10/16 全球购物
学校经典推荐信
2013/10/30 职场文书
保密承诺书范文
2014/03/27 职场文书
倡议书格式范文
2014/04/14 职场文书
党员志愿者活动总结
2014/06/26 职场文书
采购部年度工作总结
2015/08/13 职场文书
《西门豹》教学反思
2016/02/23 职场文书
mysql定时自动备份数据库的方法步骤
2021/07/07 MySQL
Springboot-cli 开发脚手架,权限认证,附demo演示
2022/04/28 Java/Android