解决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数据库操作常用功能使用详解(创建表/插入数据/获取数据)
Dec 06 Python
使用PyInstaller将Python程序文件转换为可执行程序文件
Jul 08 Python
Python复数属性和方法运算操作示例
Jul 21 Python
python监控进程脚本
Apr 12 Python
python scipy求解非线性方程的方法(fsolve/root)
Nov 12 Python
python实现数据分析与建模
Jul 11 Python
python通过txt文件批量安装依赖包的实现步骤
Aug 13 Python
Python进程间通信 multiProcessing Queue队列实现详解
Sep 23 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
Feb 26 Python
在Python IDLE 下调用anaconda中的库教程
Mar 09 Python
如何用Anaconda搭建虚拟环境并创建Django项目
Aug 02 Python
如何用Matlab和Python读取Netcdf文件
Feb 19 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自动提交表单的方法(基于fsockopen与curl)
2016/05/09 PHP
php微信高级接口群发 多客服
2016/06/23 PHP
Yii框架中jquery表单验证插件用法示例
2016/10/18 PHP
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
2019/06/12 PHP
PHP创建对象的六种方式实例总结
2019/06/27 PHP
laravel-admin解决表单select联动时,编辑默认没选上的问题
2019/09/30 PHP
javascript 拖放效果实现代码
2010/01/22 Javascript
jquery在IE、FF浏览器的差别详细探讨
2013/04/28 Javascript
json的定义、标准格式及json字符串检验
2014/05/11 Javascript
14款经典网页图片和文字特效的jQuery插件-前端开发必备
2015/08/25 Javascript
jQuery使用中可能被XSS攻击的一些危险环节提醒
2016/05/24 Javascript
js绘制购物车抛物线动画
2020/11/18 Javascript
微信小程序 底部导航栏目开发资料
2016/12/05 Javascript
nodejs个人博客开发第四步 数据模型
2017/04/12 NodeJs
Angular2.0/4.0 使用Echarts图表的示例代码
2017/12/07 Javascript
微信小程序 腾讯地图显示偏差问题解决
2019/07/27 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
[46:59]完美世界DOTA2联赛PWL S2 GXR vs Ink 第二场 11.19
2020/11/20 DOTA
Python编写屏幕截图程序方法
2015/02/18 Python
python编程实现归并排序
2017/04/14 Python
python email smtplib模块发送邮件代码实例
2018/04/26 Python
Python3.5内置模块之time与datetime模块用法实例分析
2019/04/27 Python
Python文件操作方法详解
2020/02/09 Python
Python闭包与装饰器原理及实例解析
2020/04/30 Python
Pandas DataFrame求差集的示例代码
2020/12/13 Python
HTML5图片层叠的实现示例
2020/07/07 HTML / CSS
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
2014庆六一活动方案
2014/03/02 职场文书
环保建议书
2014/03/12 职场文书
聚美优品励志广告词
2014/03/14 职场文书
《故乡》教学反思
2014/04/10 职场文书
2015年网络管理员工作总结
2015/05/21 职场文书
公司借条范本
2015/05/25 职场文书
新员工试用期工作总结2015
2015/05/28 职场文书
参加招聘会后的感想
2015/08/10 职场文书