Python

Python-chardet 编码检测

2018-07-09  本文已影响0人  anyurchao

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学习笔记

上一篇下一篇

猜你喜欢

热点阅读