解决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 23 Python
Python中解析JSON并同时进行自定义编码处理实例
Feb 08 Python
在Windows系统上搭建Nginx+Python+MySQL环境的教程
Dec 25 Python
python记录程序运行时间的三种方法
Jul 14 Python
查看django版本的方法分享
May 14 Python
使用Python处理BAM的方法
Sep 28 Python
python使用xlsxwriter实现有向无环图到Excel的转换
Dec 12 Python
Python实现性能自动化测试竟然如此简单
Jul 30 Python
PyTorch中Tensor的拼接与拆分的实现
Aug 18 Python
使用pyshp包进行shapefile文件修改的例子
Dec 06 Python
在python中list作函数形参,防止被实参修改的实现方法
Jun 05 Python
python实现计算器简易版
Dec 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
实现树状结构的两种方法
2006/10/09 PHP
PHP高精确度运算BC函数库实例详解
2017/08/15 PHP
php实现获取近几日、月时间示例
2019/07/06 PHP
PHP并发场景的三种解决方案代码实例
2021/02/27 PHP
脚本吧 - 幻宇工作室用到js,超强推荐share.js
2006/12/23 Javascript
js模拟弹出效果代码修正版
2008/08/07 Javascript
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
基于JQuery的密码强度验证代码
2010/03/01 Javascript
Javascript模块化编程(一)AMD规范(规范使用模块)
2013/01/17 Javascript
JavaScript中把数字转换为字符串的程序代码
2013/06/19 Javascript
文本有关的样式和jQuery求对象的高宽问题分别说明
2013/08/30 Javascript
jquery对ajax的支持介绍
2013/12/10 Javascript
JS中FRAME的操作问题实例分析
2014/10/21 Javascript
jquery实现焦点图片随机切换效果的方法
2015/03/12 Javascript
Jquery实现瀑布流布局(备有详细注释)
2015/07/31 Javascript
JS设置下拉列表框当前所选值的方法
2015/12/22 Javascript
jQuery子元素过滤选择器用法示例
2016/09/09 Javascript
微信小程序 教程之wxapp视图容器 swiper
2016/10/19 Javascript
JS实现的简单图片切换功能示例【测试可用】
2017/02/14 Javascript
js canvas实现放大镜查看图片功能
2017/06/08 Javascript
Windows安装Node.js报错:2503、2502的解决方法
2017/10/25 Javascript
Vue内部渲染视图的方法
2019/09/02 Javascript
node.js express框架实现文件上传与下载功能实例详解
2019/10/15 Javascript
JavaScript实现动态留言板
2020/03/16 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
2020/05/14 Javascript
Zookeeper接口kazoo实例解析
2018/01/22 Python
Python实现将Excel转换成xml的方法示例
2018/08/25 Python
pytorch 求网络模型参数实例
2019/12/30 Python
keras输出预测值和真实值方式
2020/06/27 Python
小学生红领巾广播稿
2014/01/21 职场文书
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
中国梦读书活动总结
2014/07/10 职场文书
项目负责人岗位职责
2015/02/15 职场文书
提升Nginx性能的一些建议
2021/03/31 Servers
简单且有用的Python数据分析和机器学习代码
2021/07/02 Python
《金肉人》米特&《航海王》阿鹤声优松岛实因胰脏癌去世 享寿81岁
2022/04/13 日漫