解决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中的strftime()方法的使用
May 22 Python
Python计算已经过去多少个周末的方法
Jul 25 Python
Python中内置数据类型list,tuple,dict,set的区别和用法
Dec 14 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
Aug 18 Python
Python网络编程详解
Oct 31 Python
分享6个隐藏的python功能
Dec 07 Python
python中pip的安装与使用教程
Aug 10 Python
python绘制热力图heatmap
Mar 23 Python
Python 中使用 PyMySQL模块操作数据库的方法
Nov 10 Python
Python做图像处理及视频音频文件分离和合成功能
Nov 24 Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 04 Python
Django实现在线无水印抖音视频下载(附源码及地址)
May 06 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 select,radio和checkbox默认选择的实现方法
2010/05/15 PHP
浅析PHP中Collection 类的设计
2013/06/21 PHP
如何在Ubuntu下启动Apache的Rewrite功能
2013/07/05 PHP
分享PHP守护进程类
2015/12/30 PHP
基于php实现的验证码小程序
2016/12/13 PHP
php获取访问者浏览页面的浏览器类型
2017/01/23 PHP
实例介绍PHP删除数组中的重复元素
2019/03/03 PHP
PHPExcel实现的读取多工作表操作示例
2020/04/14 PHP
Javascript脚本实现静态网页加密实例代码
2013/11/05 Javascript
Js+Jq获取URL参数的集中方法示例代码
2014/05/20 Javascript
jQuery实现contains方法不区分大小写的方法
2015/02/13 Javascript
js实现a标签超链接提交form表单的方法
2015/06/24 Javascript
JavaScript保存并运算页面中数字类型变量的写法
2015/07/06 Javascript
通过jquery-ui中的sortable来实现拖拽排序的简单实例
2016/05/24 Javascript
Three.js学习之Lamber材质和Phong材质
2016/08/04 Javascript
Javascript继承机制详解
2017/05/30 Javascript
JavaScript生成图形验证码
2020/08/24 Javascript
Vue学习笔记进阶篇之vue-cli安装及介绍
2017/07/18 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
2017/12/16 Javascript
JS改变页面颜色源码分享
2018/02/24 Javascript
使用NestJS开发Node.js应用的方法
2018/12/03 Javascript
Vue监听页面刷新和关闭功能
2019/06/20 Javascript
Python os.access()用法实例
2019/02/18 Python
python 用 xlwings 库 生成图表的操作方法
2019/12/22 Python
PyInstaller的安装和使用的详细步骤
2020/06/02 Python
Python grequests模块使用场景及代码实例
2020/08/10 Python
商务英语专业应届毕业生求职信
2013/10/28 职场文书
家长建议怎么写
2014/05/15 职场文书
内科护士节演讲稿
2014/09/11 职场文书
2014年度思想工作总结
2014/11/27 职场文书
宾馆卫生管理制度
2015/08/06 职场文书
《小小的船》教学反思
2016/02/18 职场文书
解决golang在import自己的包报错的问题
2021/04/29 Golang
Jupyter Notebook内使用argparse报错的解决方案
2021/06/03 Python
SQL写法--行行比较
2021/08/23 SQL Server