牛骨文教育服务平台(让学习变的简单)
博文笔记

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

创建时间:2017-02-22 投稿人: 浏览次数:2586

使用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编码方式了。

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。