longgb246的博客

chardet 模块 编码检测

一、基本用法

使用detect函数

输入字符串,输出检测的编码和置信度。

1
2
3
4
5
6
import urllib
rawdata = urllib.urlopen('http://yahoo.co.jp/').read()
import chardet
chardet.detect(rawdata)
[out] {'encoding': 'EUC-JP', 'confidence': 0.99}

二、高级用法

处理大量文本,增量式的检测。

1
2
3
4
5
6
7
8
9
10
11
12
13
import urllib
from chardet.universaldetector import UniversalDetector
usock = urllib.urlopen('http://yahoo.co.jp/')
detector = UniversalDetector()
for line in usock.readlines():
detector.feed(line)
if detector.done: break
detector.close()
usock.close()
print detector.result
[out] {'encoding': 'EUC-JP', 'confidence': 0.99}

使用UniversalDetector()检测器,.feed()添加检测文本,增量检测的时候,如果达到最小阈值,则.done的值为True
使用.close()关闭,.result为结果。

1
2
3
4
5
6
7
8
9
10
11
12
import glob
from chardet.universaldetector import UniversalDetector
detector = UniversalDetector()
for filename in glob.glob('*.xml'):
print filename.ljust(60),
detector.reset()
for line in file(filename, 'rb'):
detector.feed(line)
if detector.done: break
detector.close()
print detector.result

.reset()UniversalDetector()检测器的重用。

坚持原创技术分享,您的支持将鼓励我继续创作!