Python中动态检测编码chardet的使用教程


Posted in Python onJuly 06, 2017

前言

在互联网的世界里,每个页面都使用了编码,但是形形色色的编码让我们的代码何以得知其棉麻格式呢?charset将很好的解决这个问题。

1. chardet

chardet是Python社区提供了一个类库包,方便我们在代码中动态检测当前页面或者文件中的编码格式信息。接口非常的简单和易用。

Project主页: https://github.com/chardet/chardet

本地下载地址:http://xiazai.3water.com/201707/yuanma/chardet(3water.com).rar

文档主页: http://chardet.readthedocs.io/en/latest/usage.html

2. 使用示例

Notice: 笔者使用的python 3.5 +

Case 1: 检测特定页面的编码格式

import chardet
import urllib.request
TestData = urllib.request.urlopen('http://www.baidu.com/').read()
print(chardet.detect(TestData))

输出结果:

{'confidence': 0.99, 'encoding': 'utf-8'}

结果分析, 其准确率99%的概率,编码格式为utf-8

使用说明:detect()为其关键方法

Case 2: 增量检测编码格式

import urllib.request
from chardet.universaldetector import UniversalDetector
usock = urllib.request.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)

输出结果:

{'confidence': 0.99, 'encoding': 'utf-8'}

说明: 为了提高预测的准确性,基于dector.feed()来实现持续的信息输入,在信息足够充足之后结束信息输入,给出相应的预测和判断。

如果需要复用detector方法,需要进行detector.reset()进行重置,从而可以复用。

Case 3: 在安装chardet之后,可以基于命令行来检测文件编码

% chardetect somefile someotherfile
somefile: windows-1252 with confidence 0.5
someotherfile: ascii with confidence 1.0

在系统层面,可以直接基于命令行来进行文件编码检测,非常简单易用。

3. 总结

chardet是非常易用和功能强大的Python包,相信大家在web世界中遨游之时,肯定会用上这个chardet的。 如有问题,欢迎大家反馈给我。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
详解Python中 sys.argv[]的用法简明解释
Dec 20 Python
python 读取摄像头数据并保存的实例
Aug 03 Python
python实现的自动发送消息功能详解
Aug 15 Python
Python 经典算法100及解析(小结)
Sep 13 Python
在Python中利用pickle保存变量的实例
Dec 30 Python
自定义Django默认的sitemap站点地图样式
Mar 04 Python
Python如何使用bokeh包和geojson数据绘制地图
Mar 21 Python
基于django micro搭建网站实现加水印功能
May 22 Python
python中np是做什么的
Jul 21 Python
Python Celery异步任务队列使用方法解析
Aug 10 Python
python 常用日期处理-- datetime 模块的使用
Sep 02 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
Jan 29 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
Jul 06 #Python
CentOS 7下Python 2.7升级至Python3.6.1的实战教程
Jul 06 #Python
Python中定时任务框架APScheduler的快速入门指南
Jul 06 #Python
Python如何快速实现分布式任务
Jul 06 #Python
Python3下错误AttributeError: ‘dict’ object has no attribute’iteritems‘的分析与解决
Jul 06 #Python
Python标准库sched模块使用指南
Jul 06 #Python
用virtualenv建立多个Python独立虚拟开发环境
Jul 06 #Python
You might like
用PHP生成静态HTML速度快类库
2007/03/18 PHP
php checkbox 取值详细说明
2010/08/19 PHP
深入理解PHP原理之Session Gc的一个小概率Notice
2011/04/12 PHP
PHP中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
2016/10/29 PHP
php mysql like 实现多关键词搜索的方法
2016/10/29 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
2018/01/16 PHP
js下将字符串当函数执行的方法
2011/07/13 Javascript
jquery实现的图片点击滚动效果
2014/04/29 Javascript
js创建表单元素并使用submit进行提交
2014/08/14 Javascript
详解基于Bootstrap扁平化的后台框架Ace
2015/11/27 Javascript
jQuery 更改checkbox的状态,无效的解决方法
2016/07/22 Javascript
利用jQuery实现打字机字幕效果实例代码
2016/09/02 Javascript
聊一聊JS中的prototype
2016/09/29 Javascript
js实现复制功能(多种方法集合)
2018/01/06 Javascript
webpack将js打包后的map文件详解
2018/02/22 Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
2018/11/13 Javascript
小程序根据手机机型设置自定义底部导航距离
2019/06/04 Javascript
vue element 关闭当前tab 跳转到上一路由操作
2020/07/22 Javascript
[04:22]DOTA2上海特级锦标赛主赛事第四日TOP10
2016/03/06 DOTA
[49:43]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
django 发送邮件和缓存的实现代码
2018/07/18 Python
Python判断以什么结尾以什么开头的实例
2018/10/27 Python
浅谈Django2.0 加xadmin踩的坑
2019/11/15 Python
python3处理word文档实例分析
2020/12/01 Python
浅析rem和em和px vh vw和% 移动端长度单位
2016/04/28 HTML / CSS
Betsey Johnson官网:妖娆可爱的连衣裙及鞋子、手袋和配件
2016/12/30 全球购物
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
校园网站的创业计划书范文
2013/12/30 职场文书
2014教师年度思想工作总结
2014/11/10 职场文书
个人总结与自我评价2015
2015/03/11 职场文书
刑事上诉状(无罪)
2015/05/23 职场文书
毕业生学校组织意见
2015/06/04 职场文书
公司管理制度范本
2015/08/03 职场文书
最新最全的手机号验证正则表达式
2022/02/24 Javascript
Golang map映射的用法
2022/04/22 Golang