解决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 相关文章推荐
浅谈编码,解码,乱码的问题
Dec 30 Python
Python创建二维数组实例(关于list的一个小坑)
Nov 07 Python
python中logging包的使用总结
Feb 28 Python
利用Python模拟登录pastebin.com的实现方法
Jul 12 Python
利用pandas合并多个excel的方法示例
Oct 10 Python
python 正则表达式参数替换实例详解
Jan 17 Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
Mar 12 Python
Pycharm配置PyQt5环境的教程
Apr 02 Python
python使用nibabel和sitk读取保存nii.gz文件实例
Jul 01 Python
手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤
Aug 07 Python
python安装mysql的依赖包mysql-python操作
Jan 01 Python
python实现局部图像放大
Nov 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
php实现批量压缩图片文件大小的脚本
2014/07/04 PHP
codeigniter中实现一次性加载多个view的方法
2015/03/20 PHP
PHP数据库连接mysql与mysqli对比分析
2016/01/04 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
学习ExtJS border布局
2009/10/08 Javascript
为javascript添加String.Format方法
2020/08/11 Javascript
浅析JavaScript中的常用算法与函数
2013/11/21 Javascript
给ListBox添加双击事件示例代码
2013/12/02 Javascript
JQuery Tips相关(1)----关于$.Ready()
2014/08/14 Javascript
jQuery中insertAfter()方法用法实例
2015/01/08 Javascript
js插件设置innerHTML时在IE8下提示“未知运行时错误”解决方法
2015/04/25 Javascript
javascript深拷贝和浅拷贝详解
2017/02/14 Javascript
jQuery插件echarts实现的去掉X轴、Y轴和网格线效果示例【附demo源码下载】
2017/03/04 Javascript
Node.js使用Express创建Web项目详细教程
2017/03/31 Javascript
解决vue 路由变化页面数据不刷新的问题
2018/03/13 Javascript
Angular6中使用Swiper的方法示例
2018/07/09 Javascript
微信小程序网络请求封装示例
2018/07/24 Javascript
layui当点击文本框时弹出选择框,显示选择内容的例子
2019/09/02 Javascript
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
2020/03/20 jQuery
jQuery加PHP实现图片上传并提交的示例代码
2020/07/16 jQuery
Python函数参数操作详解
2018/08/03 Python
python中实现控制小数点位数的方法
2019/01/24 Python
Python第三方库h5py_读取mat文件并显示值的方法
2019/02/08 Python
详解Python3 基本数据类型
2019/04/19 Python
Python3.5基础之NumPy模块的使用图文与实例详解
2019/04/24 Python
浅谈pytorch池化maxpool2D注意事项
2020/02/18 Python
基于K.image_data_format() == 'channels_first' 的理解
2020/06/29 Python
基于DOM+CSS3实现OrgChart组织结构图插件
2016/03/02 HTML / CSS
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
2015/02/22 面试题
优秀部门获奖感言
2014/02/14 职场文书
大学专科求职信
2014/07/02 职场文书
水利水电建筑施工应届生求职信
2014/07/04 职场文书
党的群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
2014年科普工作总结
2014/12/06 职场文书
2015中秋节慰问信范文
2015/03/23 职场文书