解决Python2.7读写文件中的中文乱码问题
作者:haha_point 发布时间:2023-05-16 11:23:51
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,语文
来源:https://blog.csdn.net/haha_point/article/details/77948830
猜你喜欢
- 如何在ADO中使用SQL函数?代码见下:<%Set conn1 = Server.CreateObjec
- 利用Keras构建完普通BP神经网络后,还要会构建CNNKeras中构建CNN的重要函数1、Conv2DConv2D用于在CNN中构建卷积层
- 1.使用Qt Design设计一个空白窗口(注意:我是使用MainWindow创建的窗口)2.使用PyUIC将.ui文件转换成.py文件右键
- 一、随机数种子为什么要提出随机数种子呢?咱们前面提到过了,随机数均是模拟出来的, 想要模拟的比较真实,就需要变换种子函数内的数值,一般以时间
- 目录json支持的格式:代码操作1.json转化为python2. python序列化为json总结json转化为python表示反序列化p
- 目录前言filestools库介绍一行代码给图片加水印总结前言版权相当重要,对于某张图片,可能是你精心制作的思维导图,或者你精心设计的某个l
- 1、并双击新建工程窗口中ActiveX DLL图标,VB将自动为项目添加一个类模块,并将该项目类型设置为ActiveX DLL。2、在属性窗
- 通过python处理光斑图像1 相关包与图像读取首先需要科学计算必备包numpy和画图包matplotlib.pyplot,我们通过后者进行
- sys.argv[]说白了就是一个从程序外部获取参数的桥梁,这个“外部”很关键,因为我们从外部取得的参数可以是多个,所以获得的是一个列表(l
- 本文实例讲述了python中requests模块的使用方法。分享给大家供大家参考。具体分析如下:在HTTP相关处理中使用python是不必要
- YAHOO.util.Subscriber 与 YAHOO.util.CustomEvent。1. YAHOO
- 众所周知,IE 6只支持单通道的PNG图片(即只有透明/不透明2种状态,gif图片的透明单通道透明),因此如果需要使用alpha透明的png
- *在起初pip install matplotlib时,主动安装到当时最新版本(matplotlib==3.3.2),在StackOverf
- 1 Support Vector Machines1.1 Example Dataset 1%matplotlib inlineimport
- 第一:编写限制搜索范围的查询语句。众所周知,在数据库查询的时候返回记录的多少直接关系到查询的效率。所以,在客户端通过一定的条件语句,限制搜索
- 问:怎样实现ORACLE中用一条SQL实现其它进制到十进制的转换?答:具体示例如下:-----二进制转换十进制---------------
- 一、lambda关键字的使用方法func=lambda x:x+1print(func(1))#2print(func(2))#3#以上la
- 代码如下:< % Set fso=Server.CreateObject("Scripting
- 本文实例讲述了Python实现批量读取word中表格信息的方法。分享给大家供大家参考。具体如下:单位收集了很多word格式的调查表,领导需要
- 此处收集的是一些夺人心魄的创意广告牌,巧妙的构思十分值得大家观瞻.......超人归来 superman returnsNespressos