python 读取文本里有多种编码

python 读取文本里有多种编码,第1张

读取ANSI编码文件

建立一个文件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 codecs

3. 使用codecs模块,例如读取test文件内容并打印:

import codecs

f=codecs.open(r"test.txt","r","gbk")

print(f.read())

f.close()

(示例的文件是ANSI所以使用GBK读取)

以上就可以正确读取想要的文件了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12064540.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存