解决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中pygame安装方法图文详解
Nov 11 Python
Python实现自动添加脚本头信息的示例代码
Sep 02 Python
python远程连接服务器MySQL数据库
Jul 02 Python
python 定时器,实现每天凌晨3点执行的方法
Feb 20 Python
Python实现字符串匹配的KMP算法
Apr 04 Python
对Python生成器、装饰器、递归的使用详解
Jul 19 Python
python自动分箱,计算woe,iv的实例代码
Nov 22 Python
django restframework serializer 增加自定义字段操作
Jul 15 Python
matplotlib基础绘图命令之bar的使用方法
Aug 13 Python
pytorch 6 batch_train 批训练操作
May 28 Python
python 经纬度求两点距离、三点面积操作
Jun 03 Python
Python Pygame实战在打砖块游戏的实现
Mar 17 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
Zend Framework中的简单工厂模式 图文
2012/07/10 PHP
测试PHP连接MYSQL成功与否的代码
2013/08/16 PHP
PHP使用GIFEncoder类生成gif动态滚动字幕
2014/07/01 PHP
TNC vs BOOM BO3 第一场2.13
2021/03/10 DOTA
js prototype截取字符串函数
2010/04/01 Javascript
js限制文本框只能输入数字(正则表达式)
2012/07/15 Javascript
js操纵跨frame的三级联动select下拉选项实例介绍
2013/05/19 Javascript
jquery选择器原理介绍($()使用方法)
2014/03/25 Javascript
jQuery循环滚动新闻列表示例代码
2014/06/17 Javascript
jQuery判断浏览器并动态调整select宽度的方法
2016/03/02 Javascript
AngularJs 60分钟入门基础教程
2016/04/03 Javascript
bootstrap学习笔记之初识bootstrap
2016/06/21 Javascript
第一次动手实现bootstrap table分页效果
2016/09/22 Javascript
通过修改360抢票的刷新频率和突破8车次限制实现方法
2017/01/04 Javascript
微信小程序 flex实现导航实例详解
2017/04/26 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
通过JS深度判断两个对象字段相同
2019/06/14 Javascript
vue实现可移动的悬浮按钮
2021/03/04 Vue.js
Python基于有道实现英汉字典功能
2015/07/25 Python
Python字典数据对象拆分的简单实现方法
2017/12/05 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
2018/10/11 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
2019/11/11 Python
pytorch三层全连接层实现手写字母识别方式
2020/01/14 Python
tensorflow之tf.record实现存浮点数数组
2020/02/17 Python
python利用proxybroker构建爬虫免费IP代理池的实现
2021/02/21 Python
JD Sports法国:英国篮球和运动时尚的领导者
2017/09/28 全球购物
机械专业毕业生自荐信
2013/11/02 职场文书
一年级班主任感言
2014/03/08 职场文书
安全技术说明书
2014/05/09 职场文书
大学新生入学教育方案
2014/05/16 职场文书
法制宣传口号
2014/06/16 职场文书
2014年国庆节演讲稿
2014/09/02 职场文书
2014年体育部工作总结
2014/11/13 职场文书
交通事故被告代理词
2015/05/23 职场文书
2015年女工委工作总结
2015/07/27 职场文书
python元组打包和解包过程详解
2021/08/02 Python