解决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 05 Python
Windows下实现Python2和Python3两个版共存的方法
Jun 12 Python
Python 提取dict转换为xml/json/table并输出的实现代码
Aug 28 Python
深入了解Python中pop和remove的使用方法
Jan 09 Python
pytorch permute维度转换方法
Dec 14 Python
Python+OpenCv制作证件图片生成器的操作方法
Aug 21 Python
pytorch torchvision.ImageFolder的用法介绍
Feb 20 Python
pycharm实现在子类中添加一个父类没有的属性
Mar 12 Python
Python 实现国产SM3加密算法的示例代码
Sep 21 Python
matplotlib相关系统目录获取方式小结
Feb 03 Python
Python数据分析入门之教你怎么搭建环境
May 13 Python
Pytorch可视化的几种实现方法
Jun 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判断FORM表单或URL参数来的数据是否为整数的方法
2016/03/25 PHP
thinkPHP分组后模板无法加载问题解决方法
2016/07/12 PHP
PHP+iframe模拟Ajax上传文件功能示例
2019/07/02 PHP
ff下JQuery无法监听input的keyup事件的解决方法
2013/12/12 Javascript
javascript实现限制上传文件大小
2015/02/06 Javascript
jQuery ui实现动感的圆角渐变网站导航菜单效果代码
2015/08/26 Javascript
详解JS中Array对象扩展与String对象扩展
2016/01/07 Javascript
使用jquery实现的循环连续可停顿滚动实例
2016/11/23 Javascript
jquery实现弹窗功能(窗口居中显示)
2017/02/27 Javascript
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
2017/03/10 Javascript
javascript作用域链与执行环境详解
2017/03/25 Javascript
JS设计模式之惰性模式(二)
2017/09/29 Javascript
Angular异步变同步处理方法
2018/08/13 Javascript
vue 修改 data 数据问题并实时显示的方法
2018/08/27 Javascript
vue 项目 iOS WKWebView 加载
2019/04/17 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
简单谈谈javascript高级特性
2019/09/04 Javascript
详解vue beforeEach 死循环问题解决方法
2020/02/25 Javascript
使用Python抓取模板之家的CSS模板
2015/03/16 Python
pygame学习笔记(4):声音控制
2015/04/15 Python
python利用百度AI实现文字识别功能
2018/11/27 Python
对python中的six.moves模块的下载函数urlretrieve详解
2018/12/19 Python
python学生管理系统的实现
2020/04/05 Python
python自定义函数def的应用详解
2020/06/03 Python
PyTorch中的拷贝与就地操作详解
2020/12/09 Python
python定义具名元组实例操作
2021/02/28 Python
HTML5 新标签全部总汇(推荐)
2016/06/13 HTML / CSS
泰国汽车、火车和轮渡票预订网站:Bus Online Ticket
2017/09/09 全球购物
大学生先进事迹材料
2014/02/16 职场文书
房屋租赁协议书范本
2014/04/10 职场文书
党的群众路线教育学习材料
2014/05/12 职场文书
我们的节日春节活动方案
2014/08/22 职场文书
群众路线教育党员自我剖析材料
2014/10/06 职场文书
投诉信回复范文
2015/07/03 职场文书
诚实守信主题班会
2015/08/13 职场文书
golang特有程序结构入门教程
2021/06/02 Python