Python学习82:chardet
2023-09-14 09:06:14 时间
字符串编码一直是令人非常头疼的问题,尤其是我们在处理一些不规范的第三方网页的时候。虽然Python提供了Unicode表示的str
和bytes
两种数据类型,并且可以通过encode()
和decode()
方法转换,但是,在不知道编码的情况下,对bytes
做decode()
不好做。
对于未知编码的bytes
,要把它转换成str
,需要先“猜测”编码。猜测的方式是先收集各种编码的特征字符,根据特征字符判断,就能有很大概率“猜对”。
当然,我们肯定不能从头自己写这个检测编码的功能,这样做费时费力。chardet这个第三方库正好就派上了用场。用它来检测编码,简单易用。
安装chardet
如果安装了Anaconda,chardet就已经可用了。否则,需要在命令行下通过pip安装:
$ pip install chardet
如果遇到Permission denied安装失败,请加上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.detect(data)
{'encoding': 'GB2312', 'confidence': 0.7407407407407407, 'language': 'Chinese'}
检测的编码是GB2312
,注意到GBK是GB2312的超集,两者是同一种编码,检测正确的概率是74%,language
字段指出的语言是'Chinese'
。
对UTF-8编码进行检测:
>>> data = '离离原上草,一岁一枯荣'.encode('utf-8')
>>> chardet.detect(data)
{'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}
我们再试试对日文进行检测:
>>> data = '最新の主要ニュース'.encode('euc-jp')
>>> chardet.detect(data)
{'encoding': 'EUC-JP', 'confidence': 0.99, 'language': 'Japanese'}
可见,用chardet检测编码,使用简单。获取到编码后,再转换为str
,就可以方便后续处理。
chardet支持检测的编码列表请参考官方文档Supported encodings。
小结
使用chardet检测编码非常容易,chardet支持检测中文、日文、韩文等多种语言。
更多内容,可关注作者的微信公众号:胖哥真不错。
相关文章
- python paramiko模块学习分享
- 【学习总结】Python-3-字符串函数-strip()方法
- 小白学 Python 数据分析(14):Pandas (十三)数据导出
- 【学习总结】Python-3-Python数字运算与数学函数
- Python视觉深度学习系列教程 第二卷 第6章 高级优化方法
- python django ansible自动化运维管理平台源码收藏
- 0基础小白该如何学Python?这些方法你需要了解
- Python语言学习:Python语言学习之迭代/递归/OS输入输出/错误&异常处理的简介、案例应用之详细攻略
- Python语言学习:利用python语言实现调用内部命令(python调用Shell脚本)—命令提示符cmd的几种方法
- Python编程专属骚技巧5
- 学习python第一天,请教一下怎么学?
- 我用python处理Excel表格数据,工作量直接减少一半(含教程)
- 暑假加餐|有钱人和你想的不一样(第20天)+改进的多目标差分进化算法在电力系统环境经济调度中的应用(Python代码实现)
- 【Python成长之路】从零学GUI -- 制作智能聊天机器人
- 深度学习 GPU环境 Ubuntu 16.04 + Nvidia GTX 1080 + Python 3.6 + CUDA 9.
- 没错!经典教材《统计学习导论》现在有了 Python版!
- 【阶段三】Python机器学习16篇:机器学习项目实战:集成模型介绍、随机森林模型的基本原理与随机森林分类模型
- Python实现贝叶斯优化器(Bayes_opt)优化卷积神经网络分类模型(CNN分类算法)项目实战
- Python Flask框架学习13:Flask Cookies
- Python学习77:urllib
- python isinstance用法
- vs code怎么设置python解释器
- Python基础题目大全,测试你的水平,巩固知识(含答案)
- 多版本Python共存时pip给指定版本的python安装package的方法
- Python数学计算工具4、Python求最大公约数
- 〖Python自动化办公篇⑨〗- word文件自动化 - 设置Word全局样式和文本样式
- WSL2-Ubuntu中创建python虚拟环境
- python工具方法35 实现SWA,再一次提升模型的性能
- Python调用自己写的模块