处理Python2.7读写文件中的中文乱码问题

Posted pengwue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了处理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 写文件

  1. 文件名有中文,文件名乱码 
    当想要将程序运行结果保存到文本文件时,文本文件的命名中如果有中文,不做处理文件名会出现乱码。利用unicode函数进行编码可解。unicode(‘中文.csv’,’utf-8’)

  2. 文件内容有中文,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读写文件中的中文乱码问题的主要内容,如果未能解决你的问题,请参考以下文章

python2.7应用codecs模块处理包含中文的读写问题

Python2.7打印中文乱码处理

中文乱码——编码问题

python2.7下使用logging模块记录日志到终端显示乱码问题解决

原创python中文编码问题深入分析:python2.7文件读写中文编码问题

python2.7的中文出现乱码怎么解决