解决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 08 Python
pytyon 带有重复的全排列
Aug 13 Python
在Python中通过getattr获取对象引用的方法
Jan 21 Python
在python中利用opencv简单做图片比对的方法
Jan 24 Python
python 读写excel文件操作示例【附源码下载】
Jun 19 Python
python pandas模块基础学习详解
Jul 03 Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
Jan 02 Python
Python流程控制常用工具详解
Feb 24 Python
python3利用Axes3D库画3D模型图
Mar 25 Python
python 字符串格式化的示例
Sep 21 Python
python数据抓取3种方法总结
Feb 07 Python
python保存大型 .mat 数据文件报错超出 IO 限制的操作
May 10 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检测网页是否被百度收录的函数代码
2013/10/09 PHP
php实现留言板功能(代码详解)
2017/03/28 PHP
thinkPHP框架乐观锁和悲观锁实例分析
2019/10/30 PHP
JS获取dom 对象 ajax操作 读写cookie函数
2009/11/18 Javascript
javascript 简单抽屉效果的实现代码
2010/03/09 Javascript
jQuery中filter(),not(),split()使用方法
2010/07/06 Javascript
JQuery自定义事件的应用 JQuery最佳实践
2010/08/01 Javascript
javascript中substr,substring,slice.splice的区别说明
2010/11/25 Javascript
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
关于JavaScript的面向对象和继承有利新手学习
2013/01/11 Javascript
jquery中常用的SET和GET$(”#msg”).html循环介绍
2013/10/09 Javascript
jquery动态添加option示例
2013/12/30 Javascript
JS判断浏览器是否支持某一个CSS3属性的方法
2014/10/17 Javascript
AngularJS快速入门
2015/04/02 Javascript
javascript中的previousSibling和nextSibling的正确用法
2015/09/16 Javascript
js输出数据精确到小数点后n位代码
2016/07/02 Javascript
浅谈jQuery添加的HTML,JS失效的问题
2016/10/05 Javascript
jQuery html表格排序插件tablesorter使用方法详解
2017/02/10 Javascript
js事件冒泡与事件捕获详解
2017/02/20 Javascript
详解webpack自动生成html页面
2017/06/29 Javascript
微信小程序实现留言板功能
2018/11/02 Javascript
JavaScript工具库之Lodash详解
2019/06/15 Javascript
使用 UniApp 实现小程序的微信登录功能
2020/06/09 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
我所理解的JavaScript中的this指向
2020/09/04 Javascript
JavaScript枚举选择jquery插件代码实例
2020/11/17 jQuery
swiperjs实现导航与tab页的联动
2020/12/13 Javascript
8个非常实用的Vue自定义指令
2020/12/15 Vue.js
python轻松查到删除自己的微信好友
2016/01/10 Python
纯python进行矩阵的相乘运算的方法示例
2019/07/17 Python
CSS3实现可翻转的hover效果
2018/05/23 HTML / CSS
联想澳大利亚官网:Lenovo Australia
2018/01/18 全球购物
日本著名化妆品零售网站:Cosme Land
2019/03/01 全球购物
心理健康心得体会
2014/01/02 职场文书
团代会主持词
2014/04/02 职场文书
村干部培训方案
2014/05/02 职场文书