建立一个文件test.txt,文件格式用ANSI,内容为:
abc中文
用Python来读取
# coding=gbk
print open("Test.txt").read()
结果:abc中文
读取utf-8编码文件(无BOM)
把文件格式改成UTF-8:
结果:abc涓 枃
显然,这里需要解码:
# -*- coding: utf-8 -*-
import codecs
print open("Test.txt").read().decode("utf-8")
结果:abc中文
读取utf-8编码文件(有BOM)
某些软件在保存一个以UTF-8编码的文件时,默认会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。在有些软件可以控制是否插入BOM。如果在有BOM的情况下,在读取时需要自己去掉这些字符,python中的codecs module定义了这个常量:
其中, encoding 为检测出的编码, confidence 为可信度, language 是语言。另外一个例子:
检测的编码是GB2312,注意到GBK是GB2312的超集,两者是同一种编码,检测正确的概率是74%,language字段指出的语言是'Chinese'。
注意:chardet支持检测的编码列表请参考官方文档 Supported encodings 。
在python3中系统默认编码是unicode,读取文件经常会编码错误导致报错。
首先先确认要读取文件的编码,可这样 *** 作:
记事本打开文本文件,点击“文件”-“另存为”查看编码:
如图显示编码就是当前的文件编码,这里是“utf-8”。
2. 要想用指定编码打开,使用codecs模块
安装模块pip命令:
pip install codecs3. 使用codecs模块,例如读取test文件内容并打印:
import codecsf=codecs.open(r"test.txt","r","gbk")
print(f.read())
f.close()
(示例的文件是ANSI所以使用GBK读取)
以上就可以正确读取想要的文件了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)