解决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正则匹配查询港澳通行证办理进度示例分享
Dec 27 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
Dec 23 Python
Python 实现文件的全备份和差异备份详解
Dec 27 Python
Python爬虫爬取一个网页上的图片地址实例代码
Jan 16 Python
Pandas读取并修改excel的示例代码
Feb 17 Python
Python Django框架模板渲染功能示例
Nov 08 Python
django中media媒体路径设置的步骤
Nov 15 Python
简单了解python列表和元组的区别
May 14 Python
什么是python类属性
Jun 10 Python
如何在Python3中使用telnetlib模块连接网络设备
Sep 21 Python
Python爬虫入门教程01之爬取豆瓣Top电影
Jan 24 Python
python3.7.2 tkinter entry框限定输入数字的操作
May 22 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
javascript获取鼠标位置部分的实例代码(兼容IE,FF)
2013/08/05 Javascript
把jQuery的类、插件封装成seajs的模块的方法
2014/03/12 Javascript
javascript实现图像循环明暗变化的方法
2015/02/25 Javascript
拥有一个属于自己的javascript表单验证插件
2016/03/24 Javascript
JS中的eval 为什么加括号
2016/04/13 Javascript
拥Bootstrap入怀——导航栏篇
2016/05/30 Javascript
归纳下js面向对象的几种常见写法总结
2016/08/24 Javascript
利用JS轻松实现获取表单数据
2016/12/06 Javascript
Vue.js 2.0学习教程之从基础到组件详解
2017/04/24 Javascript
javascript简单链式调用案例分析
2017/05/10 Javascript
详解vue模拟加载更多功能(数据追加)
2017/06/23 Javascript
基于vue.js的分页插件详解
2017/11/27 Javascript
详解vue-cli中使用rem,vue自适应
2019/05/06 Javascript
解决Mint-ui 框架Popup和Datetime Picker组件滚动穿透的问题
2020/11/04 Javascript
jQuery实现简单轮播图效果
2020/12/27 jQuery
Django中使用locals()函数的技巧
2015/07/16 Python
两个使用Python脚本操作文件的小示例分享
2015/08/27 Python
解析Python编程中的包结构
2015/10/25 Python
python如何实现int函数的方法示例
2018/02/19 Python
python随机取list中的元素方法
2018/04/08 Python
PyQt5每天必学之进度条效果
2018/04/19 Python
Python实现的绘制三维双螺旋线图形功能示例
2018/06/23 Python
python 字符串只保留汉字的方法
2018/11/16 Python
我们为什么要减少Python中循环的使用
2019/07/10 Python
python 常见的反爬虫策略
2020/09/27 Python
世界著名的顶级牛排:Omaha Steak(奥马哈牛排)
2016/09/20 全球购物
Radley英国官网:英国莱德利小狗包
2019/03/21 全球购物
2014年开学第一课活动方案
2014/03/06 职场文书
销售经理岗位职责
2014/03/16 职场文书
拓展策划方案
2014/06/03 职场文书
关爱留守儿童标语
2014/06/18 职场文书
土木工程生产实习心得体会
2016/01/22 职场文书
公司致全体员工的感谢信
2019/06/24 职场文书
有趣的二维码:使用MyQR和qrcode来制作二维码
2021/05/10 Python
Java Socket实现Redis客户端的详细说明
2021/05/26 Redis
MySQL中的隐藏列的具体查看
2021/09/04 MySQL