解决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简单猜数游戏实例
Jul 09 Python
Python学习小技巧之利用字典的默认行为
May 20 Python
Python中.join()和os.path.join()两个函数的用法详解
Jun 11 Python
python 发送和接收ActiveMQ消息的实例
Jan 30 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
Jun 10 Python
Python实现个人微信号自动监控告警的示例
Jul 03 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
Aug 02 Python
Python Sphinx使用实例及问题解决
Jan 17 Python
Docker部署Python爬虫项目的方法步骤
Jan 19 Python
重写django的model下的objects模型管理器方式
May 15 Python
python Django 反向访问器的外键冲突解决
May 20 Python
Python测试框架pytest高阶用法全面详解
Jun 01 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基础学习笔记
2007/03/18 PHP
PHP中ltrim()函数的用法与实例讲解
2019/03/28 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
经验几则 推荐
2006/09/05 Javascript
JavaScript arguments 多参传值函数
2010/10/24 Javascript
JQuery 弹出框定位实现方法
2010/12/02 Javascript
node.js中的url.parse方法使用说明
2014/12/10 Javascript
jquery中animate的stop()方法作用实例分析
2015/01/30 Javascript
JavaScript中property和attribute的区别详细介绍
2015/03/03 Javascript
JavaScript检查数字是否为整数或浮点数的方法
2015/06/09 Javascript
node.js+express制作网页计算器
2016/01/17 Javascript
jQuery使用模式窗口实现在主页面和子页面中互相传值的方法
2016/03/01 Javascript
JavaScript学习笔记--常用的互动方法
2016/12/07 Javascript
Vue2.0利用vue-resource上传文件到七牛的实例代码
2017/07/28 Javascript
基于JavaScript中标识符的命名规则介绍
2018/01/06 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
2019/12/15 Javascript
ant-design-vue按需加载的坑的解决
2020/05/14 Javascript
python中的装饰器详解
2015/04/13 Python
深入探究Python中变量的拷贝和作用域问题
2015/05/05 Python
Python的净值数据接口调用示例分享
2016/03/15 Python
Python上下文管理器和with块详解
2017/09/09 Python
Mac中Python 3环境下安装scrapy的方法教程
2017/10/26 Python
Python正则表达式指南 推荐
2018/10/09 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
2019/01/23 Python
在django中实现页面倒数几秒后自动跳转的例子
2019/08/16 Python
python中adb有什么功能
2020/06/07 Python
Lyle & Scott苏格兰金鹰官网:英国皇室御用品牌
2018/05/09 全球购物
世界领先的26岁以下学生和青少年旅行预订网站:StudentUniverse
2018/07/01 全球购物
英国最大的割草机购买网站:Just Lawnmowers
2019/11/02 全球购物
幼儿教师考核制度
2014/01/25 职场文书
行政监察建议书
2014/05/19 职场文书
党的群众路线教育实践活动宣传标语口号
2014/06/06 职场文书
工程负责人任命书
2014/06/06 职场文书
员工试用期自我评价
2014/09/18 职场文书
如何使用Tkinter进行窗口的管理与设置
2021/06/30 Python