Python-chardet 编码检测

1.使用chardet

import chardet

import re

chardetList =  dir(chardet) 
chlist = []
for x in chardetList:
    if (re.match(r'[a-zA-Z]{0,100}$',x)):
        chlist.append(x)

# print('chardet属性:',chlist)
['UniversalDetector', 'VERSION', 'chardistribution', 'charsetgroupprober', 'charsetprober', 'codingstatemachine', 'compat', 'detect', 'enums', 'escprober', 'escsm', 'eucjpprober', 'euckrfreq', 'euckrprober', 'euctwfreq', 'euctwprober', 'hebrewprober', 'jisfreq', 'jpcntx', 'langbulgarianmodel', 'langcyrillicmodel', 'langgreekmodel', 'langhebrewmodel', 'langthaimodel', 'langturkishmodel', 'mbcharsetprober', 'mbcsgroupprober', 'mbcssm', 'sbcharsetprober', 'sbcsgroupprober', 'sjisprober', 'universaldetector', 'version']'''

当我们拿到一个bytes时,就可以对其检测编码。用chardet检测编码,只需要一行代码:

r1 = chardet.detect(b'Hello,world!')
print('检测编码1:',r1)
{'encoding': 'ascii',#编码格式
'confidence': 1.0, #检测的概率1.0(即100%)
'language': ''
}

我们来试试检测GBK编码的中文:

data = '大风起兮,云飞扬'.encode('gbk') 
data = '离离原上草,一岁一枯荣'.encode('gbk') 
r2 = chardet.detect(data)
print('检测编码2-GBK编码:',r2)
    {
    'encoding': 'IBM855',
    'confidence': 0.5266078104422526,
    'language': 'Russian'
    }
data1 = '大厦将倾,谁堪栋梁'.encode('utf-8')
r3 = chardet.detect(data1)
print('检测编码2-UTF-8编码:',r3)

日文检测

data2 = '最新の主要ニュース'.encode('euc-jp') 
r4 = chardet.detect(data2)
print('检测编码2-日文编码:',r4)

详细文件移步Python学习笔记

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 字符集和编码简介 在编程中常常可以见到各种字符集和编码,包括ASCII,MBCS,Unicode等字符集。确切的说...
    兰山小亭阅读 8,636评论 0 13
  • 引言 在这里我假设你已经看完了一篇Python教程,基本熟悉了Python的结构和语法,在命令行下的Python互...
    Programmer客栈阅读 65,142评论 0 17
  • Python 二三事 面向初学者介绍Python相关的一些工具,以及可能遇到的常见问题。 最后更新 2013.5....
    hzyido阅读 67,817评论 2 42
  • 引言 在这里我假设你已经看完了一篇Python教程,基本熟悉了Python的结构和语法,在命令行下的Python互...
    python瑟维尔阅读 296评论 0 2
  • (这是很早之前写的但内容没有太过时,发到这边补全一下...)面向初学者介绍Python相关的一些工具,以及可能遇到...
    jagttt阅读 67,361评论 3 44