txt文本的存储形式有四种ANSI,UTF-8,Unicode,Unicode big endian。后面两种比较少见,说说前面两种吧。
普通的打开文件的操作是这样的:
# -*- coding: utf-8 -*-
path=u"输入你的路径"
f=open(path)
text=f.readlines()
当txt文件为ANSI格式时,需要如下转换:
for i in text:
print i.decode("gbk")
或者 text =[i.decode("gbk") for i in text] 此时不会出现以下类似utf-8格式的不可见字符
当txt文件为UTF-8格式时,你会发现读取第一行的时候是可以读取的,但是匹配不了,原因是一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM),所以需要如下转换:
import codecs
if text[0][:3] == codecs.BOM_UTF8:
text[0] = text[0][3:]