您的位置:首页 > 编程语言 > Python开发

Python处理unicode编码的txt文件(Python中文处理)——解决to_excel()和to_csv()导出文件内容为空的问题

2017-02-22 09:37 1191 查看
使用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编码方式了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐