Python处理unicode编码的txt文件(Python中文处理)——解决to_excel()和to_csv()导出文件内容为空的问题
使用Python进行txt文件逐行读取时,对编码是有特殊要求的。一般进行逐行读取的语句为
filepath = "D:/filename.txt" f = open(filepath,"r") lines = f.readlines() for line in lines: print line
但是有时候我们会发现以下情况,我们在控制台中输出的内容为空。此外,千辛万苦将txt里面的内容一列列整理到一个Dataframe里面,想要保存到csv文件或者xls文件时,发现导出的文件内容都是空的,只有列名。原因是,我们想要读取的txt文件的编码是unicode和ascii格式的,在使用Python进行文本读取时,首先必须先转换为utf-8或者gbk格式,Pandas 不支持读写unicode和ascii编码方式的文件和数据。具体查看txt文件的编码方式的方法:
方法一:打开txt文件,点击左上角的“文件”,点击“另存为”,查看下方的编码方式。
方法二:使用Python的chardet模块查看文件中字符的编码格式
import chardet f = open("D:/filename.txt","r") line = f.readline() print chardet.detect(line)
好,知道了问题的原因后,要解决问题,只要我们将txt文件转换为utf-8的编码格式就行了。代码如下:
#-*- coding: utf-8 -*- import string import codecs file1 = "F:/filename/wer.txt" file2 = "F:/filename/wer_test.txt" def changecode(): tt = codecs.open(file1, "rb", "utf-16") # 111.txt为unicode编码文件,以unicode编码打开,utf-16=unicode mm = codecs.open(file2, "wb", "utf-8") ff = tt.readlines() for i in ff: mm.write(i.encode("utf-8")) tt.close mm.close changecode()好,这样就可以将字符编码转化为Python 中Pandas模块可读可写的utf-8编码方式了。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: Python如何读写文本文件?
- 下一篇: python判断文件是否存在,是否为空,然后写入