使用python处理中文csv文件,并让excel正确显示中文(避免乱码)
2018-02-03 17:33
846 查看
1)程序输出中出现乱码的原因是因为python2中中文编码的问题,需要注意的是要将处理的中文文件的编码和python源文件的编码保持一致,这样不会出现中文乱码。可以参考这两篇文章关于Python脚本开头两行的:#!/usr/bin/python和#
-*- coding: utf-8 -*-的作用 – 指定和Python中用encoding声明的文件编码和文件的实际编码之间的关系
2)在程序中能够正常输出中文,但是导出到文件后使用excel打开是出现中文乱码是因为excel能够正确识别用gb2312、gbk、gb18030或utf_8 with BOM 编码的中文,如果是utf_8 no BOM编码的中文文件,excel打开会乱码。
根据以上两点,结合自己的情况:我使用的是jupyter的ide,创建的python源文件为utf8 no BOM格式的编码,而要处理的csv文件是用gbk编码的,所以我需要将使用gbk编码的csv文件转为utf_8编码。
[python] view
plain copy
import codecs
def ReadFile(filePath,encoding):
with codecs.open(filePath,"r",encoding) as f:
return f.read()
def WriteFile(filePath,u,encoding):
with codecs.open(filePath,"w",encoding) as f:
f.write(u)
'''''
定义GBK_2_UTF8方法,用于转换文件存储编码
'''
def GBK_2_UTF8(src,dst):
content = ReadFile(src,encoding='gbk')
WriteFile(dst,content,encoding='utf_8')
'''''
qyx.csv文件使用GBK编码存储,现在将其转为UTF_8存储
'''
src = 'qyx.csv'
dst = 'qyx_utf8.csv'
GBK_2_UTF8(src,dst)
使用上面的代码能够将使用GBK编码的文件转为UTF8编码的文件。接下来就是真正处理csv文件了。
[python] view
plain copy
import pandas as pd
from urllib import unquote
'''''
读取转换存储格式后的文件
'''
path = 'qyx_utf8.csv'
data = pd.read_csv(path,)
data.head()
处理csv文件:
[python] view
plain copy
'''''
使用unquote方法对第三列的url进行decode
'''
#data['newcol'] = data[u'关键词代码'].map(unquote) #这样会导致key识别错误,正确做法应该是去掉u
data['newcol'] = data['关键词代码'].map(unquote)#也可以使用ix来取得第三列的数据
#data['newcol'] = data.ix[:,3].map(unquote)
data.head()
将data导出到文件中:
[python] view
plain copy
'''''
将结果导出到result.csv中,以UTF_8 with BOM编码(微软产品能正确识别UTF_8 with BOM存储的中文文件)存储
'''
#data.to_csv('result_utf8_no_bom.csv',encoding='utf_8')#导出的结果不能别excel正确识别
data.to_csv('result_utf8_with_bom.csv',encoding='utf_8_sig')
使用excel打开result_utf8_no_bom.csv和result_utf8_with_bom.csv,发现能够正确识别result_utf8_with_bom.csv文件
相关文章推荐
- 使用python处理中文csv文件,并让excel正确显示中文(避免乱码)
- 使用python处理中文csv文件,并让excel正确显示中文
- Python在向CSV文件写中文时乱码的处理办法
- python 写csv文件,excel打开中文乱码解决方法
- Python 3下使用Matplotlib工具画图,中文显示乱码的问题解决(修改配置文件)
- Python处理unicode编码的txt文件(Python中文处理)——解决to_excel()和to_csv()导出文件内容为空的问题
- PL/SQL Developer 导出csv文件,用excel打开中文显示乱码
- 英文版Excel 2007打开含中文的csv文件乱码如何解决
- csv文件导出,excel打开乱码处理
- 正确处理下载文件时中文文件名乱码的问题(Content-Disposition)
- mysql数据库使用SQLyog 导入中文 csv 文件出现乱码 解决
- 在Mac系统下Excel转csv文件中文乱码问题解决
- C#正确读取中文文件,避免乱码
- magento -- 在导出CSV时进行转码以保证用excel打开有中文的CSV文件时不会乱码
- ubuntu 12.04使用gedit打开txt文件中文乱码的处理方法
- 在Mac系统下Excel转csv文件中文乱码问题解决
- unix: Sunos Solaris显示中文乱码,使用SecureCRT连接正确显示中文
- python解决导出excel文件时中文文件名乱码
- csv文件出力,excel打开乱码处理
- Python 中使用 ogr 生成 shape 文件时的中文乱码问题