python第三方库-字符串编码工具 chardet 的使用(python3经典编程案例)

简介: 这篇文章介绍了如何使用Python的第三方库chardet来检测字符串的编码类型,包括ASCII、GBK、UTF-8和日文编码的检测示例。

一. chardet介绍

chardet这个第三方库的使用非常容易,chardet支持检测中文、日文、韩文等多种语言。

字符串编码一直是令人非常头疼的问题,尤其是我们在处理一些不规范的第三方网页的时候。虽然Python提供了Unicode表示的str和bytes两种数据类型,并且可以通过encode()和decode()方法转换,但是,在不知道编码的情况下,对bytes做decode()不好做。

对于未知编码的bytes,要把它转换成str,需要先“猜测”编码。猜测的方式是先收集各种编码的特征字符,根据特征字符判断,就能有很大概率“猜对”。

官方文档:https://chardet.readthedocs.io/en/latest/

github地址:https://github.com/chardet/chardet

安装:pip3 install chardet

截至目前,可以检测的编码:

  • ASCII, UTF-8, UTF-16 (2 variants), UTF-32 (4 variants)
  • Big5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN (Traditional and Simplified Chinese)
  • EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP (Japanese)
  • EUC-KR, ISO-2022-KR, Johab (Korean)
  • KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, windows-1251 (Cyrillic)
  • ISO-8859-5, windows-1251 (Bulgarian)
  • ISO-8859-1, windows-1252 (Western European languages)
  • ISO-8859-7, windows-1253 (Greek)
  • ISO-8859-8, windows-1255 (Visual and Logical Hebrew)
  • TIS-620 (Thai)

二. 使用chardet

2.1 检测编码是ascii

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

import chardet
print(chardet.detect(b'Hello, world!'))

# 运行结果
# 检测出的编码是ascii,注意到还有个confidence字段,表示检测的概率是1.0(即100%)。
{
   'encoding': 'ascii', 'confidence': 1.0, 'language': ''}
2.2 检测GBK编码:
import chardet
data = '真相只有一个'.encode('gbk')
print(chardet.detect(data))

# 运行结果
# 检测的编码是GB2312,注意到GBK是GB2312的超集,两者是同一种编码,检测正确的概率是99%,
# language字段指出的语言是'Chinese'。
{
   'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'}
2.3 对UTF-8编码进行检测
import chardet
data = '真相只有一个'.encode('utf-8')
print(chardet.detect(data))

# 运行结果
{
   'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}
2.4 检测日文
import chardet
data = '真実はいつもひとつ'.encode('euc-jp')
print(chardet.detect(data))

# 运行结果
{
   'encoding': 'EUC-JP', 'confidence': 1.0, 'language': 'Japanese'}

可见,用chardet检测编码,非常简单。获取到编码后,再转换为str,就可以方便后续处理。

相关文章
|
21天前
|
Python
Python f-strings:让字符串格式化更简洁高效!
Python f-strings:让字符串格式化更简洁高效!
152 81
|
21天前
|
Python
Python字符串格式化利器:f-strings入门指南
Python字符串格式化利器:f-strings入门指南
130 80
|
21天前
|
Python
Python高效字符串格式化:f-strings的魅力
Python高效字符串格式化:f-strings的魅力
118 80
|
3月前
|
移动开发 自然语言处理 Linux
Python中r前缀:原始字符串的魔法解析
本文深入解析Python中字符串的r前缀(原始字符串)的设计原理与应用场景。首先分析传统字符串转义机制的局限性,如“反斜杠地狱”问题;接着阐述原始字符串的工作机制,包括语法定义、与三引号结合的用法及特殊场景处理。文章重点探讨其在正则表达式、文件路径和多语言文本处理中的核心应用,并分享动态构建、混合模式编程等进阶技巧。同时纠正常见误区,展望未来改进方向,帮助开发者更好地理解和使用这一特性,提升代码可读性和维护性。
124 0
|
3月前
|
数据采集 监控 数据安全/隐私保护
Python正则表达式:用"模式密码"解锁复杂字符串
正则表达式是处理字符串的强大工具,本文以Python的`re`模块为核心,详细解析其原理与应用。从基础语法如字符类、量词到进阶技巧如贪婪匹配与预定义字符集,结合日志分析、数据清洗及网络爬虫等实战场景,展示正则表达式的强大功能。同时探讨性能优化策略(如预编译)和常见错误解决方案,帮助开发者高效掌握这一“瑞士军刀”。最后提醒,合理使用正则表达式,避免过度复杂化,追求简洁优雅的代码风格。
96 0
|
1月前
|
Python
Python编程基石:整型、浮点、字符串与布尔值完全解读
本文介绍了Python中的四种基本数据类型:整型(int)、浮点型(float)、字符串(str)和布尔型(bool)。整型表示无大小限制的整数,支持各类运算;浮点型遵循IEEE 754标准,需注意精度问题;字符串是不可变序列,支持多种操作与方法;布尔型仅有True和False两个值,可与其他类型转换。掌握这些类型及其转换规则是Python编程的基础。
154 33
|
2月前
|
SQL 安全 算法
解读 Python 3.14:模板字符串、惰性类型、Zstd压缩等7大核心功能升级
Python 3.14 引入了七大核心技术特性,大幅提升开发效率与应用安全性。其中包括:t-strings(PEP 750)提供更安全灵活的字符串处理;类型注解惰性求值(PEP 649)优化启动性能;外部调试器API标准化(PEP 768)增强调试体验;原生支持Zstandard压缩算法(PEP 784)提高效率;REPL交互环境升级更友好;UUID模块扩展支持新标准并优化性能;finally块语义强化(PEP 765)确保资源清理可靠性。这些改进使Python在后端开发、数据科学等领域更具竞争力。
111 5
解读 Python 3.14:模板字符串、惰性类型、Zstd压缩等7大核心功能升级
|
2月前
|
搜索推荐 Python
Python语言中字符串操作方法的全面归纳
以上就是Python中一些重要的字符串操作方法,掌握了这些,对于操作字符串,你也就够用了。在Python众多的特性中,字符串操作无疑是最有趣的部分之一。希望你也觉得如此。
70 27
|
3月前
|
程序员 测试技术 开发工具
怎么开发Python第三方库?手把手教你参与开源项目!
大家好,我是程序员晚枫。本文将分享如何开发Python第三方库,并以我维护的开源项目 **popdf** 为例,指导参与开源贡献。Popdf是一个PDF操作库,支持PDF转Word、转图片、合并与加密等功能。文章涵盖从fork项目、本地开发、单元测试到提交PR的全流程,适合想了解开源贡献的开发者。欢迎访问[popdf](https://gitcode.com/python4office/popdf),一起交流学习!
149 21
怎么开发Python第三方库?手把手教你参与开源项目!
|
2月前
|
数据采集 安全 BI
用Python编程基础提升工作效率
一、文件处理整明白了,少加两小时班 (敲暖气管子)领导让整理100个Excel表?手都干抽筋儿了?Python就跟铲雪车似的,哗哗给你整利索!
88 11

推荐镜像

更多