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处理unicode编码的txt文件(Python中文处理)——解决to_excel()和to_csv()导出文件内容为空的问题_第1张图片

方法二:使用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)