顶级复刻表 seo优化知识 chardet-Python的字符编码检测库

chardet-Python的字符编码检测库

String编码一直是一个让人头痛的问题,特别是当我们在处理一些不规范的第三方网页时。尽管Python为Unicode表示提供了str和bytes两种数据类型,而且可以通过encode()和decode()方法进行转换,但如果不知道编码,就对bytes进行decode()操作。
如果bytes编码未知,则首先需要“猜测”编码以将其转换为str。推测方法是首先收集不同编码的特征字符,根据特征字符进行判断,可以有很大的概率“猜对”。
我们当然不可能从头开始写代码,因为这样做很费时费力。第三方库chardet正好派上用场。用于检测编码,操作简单,使用方便。
设置chardet。
在Anaconda安装后,chardet就可以使用了。另外,您需要通过pip命令行安装:
$pipinstallchardet
如未能成功安装Permissiondenied,请使用sudo重试。
用chardet
在获取bytes时,我们可以对它进行代码检测。检测使用chardet的编码,只需一行:
>chardet.detect(b’Hello!world)
{‘encoding’:’ascii’,’confidence’:1.0,’language’:”}
该代码是ascii,还存在一个confidence字段,表明检测概率为1.0(即100%)。
让我们尝试检测GBK编码的中文:
data=’离原上草,一岁一枯荣’.encode(‘gbk’)
>chardet.det(data)
{“encoding’:“GB2312”,“confidence’:0.7407407407,“language”:“Chinese’}
注意到,GBK是GB2312的超集,两者是同一类型的编码,因此,Language字段所指的语言是“Chinese’,因此,检测正确的概率为74%。
检测UTF-8编码:
>>>data=’离开原野的草,一岁一枯荣’.encode’
>chardet.det(data)
{‘encoding’:’utf-8′,’confidence’:0.99,’language’:”}
让我们试着检测日文字:
>>>数据=“最新版”的主要出图出图地点(‘euc-jp’)
>chardet.det(data)
{‘encoding’:’EUC-JP’,’confidence’:0.99′,’language’:’Japanese’}
可以看到,使用简单的chardet检测编码。获得编码之后,再转换成str,这样便于后续的处理。

本文来自网络,不代表顶级复刻表立场,转载请注明出处:http://www.top-fake.com/18109.html
上一篇
下一篇
关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部