Gitlib Gitlib
首页
  • 分类
  • 标签
  • 归档
  • Golang开发实践万字总结
  • MySQL核心知识汇总
  • Redis实践总结
  • MQ实践万字总结
  • Docker数据持久化总结
  • Docker网络模式深度解读
  • 常用游戏反外挂技术总结
  • 读书笔记
  • 心情杂货
  • 行业杂谈
  • 友情链接
关于我
GitHub (opens new window)

Ravior

以梦为马,莫负韶华
首页
  • 分类
  • 标签
  • 归档
  • Golang开发实践万字总结
  • MySQL核心知识汇总
  • Redis实践总结
  • MQ实践万字总结
  • Docker数据持久化总结
  • Docker网络模式深度解读
  • 常用游戏反外挂技术总结
  • 读书笔记
  • 心情杂货
  • 行业杂谈
  • 友情链接
关于我
GitHub (opens new window)
  • PHP

  • Golang

  • Python

    • Python使用lambda表达式
    • Python之线程池
    • Python之装饰器
    • Python之chardet模块使用
      • 安装chardet
      • 主要方法
      • 代码测试
      • 实际运行案例
    • Python之copy模块使用
    • Python之functools模块使用
    • Python之hashlib模块使用
    • Python之json模块使用
    • Python之pickle模块使用
    • Python之pid模块使用
    • Python之pypinyin模块使用
    • Python之pyqrcode模块使用
    • Python之threading模块使用
    • Python之base64模块使用
    • Python项目Docker打包
  • Javascript

  • 其他语言

  • 编程语言
  • Python
Ravior
2014-03-16
目录

Python之chardet模块使用

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

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

当然,我们肯定不能从头自己写这个检测编码的功能,这样做费时费力。chardet这个第三方库正好就派上了用场。用它来检测编码,简单易用。

# 安装chardet

sudo pip install chardet
1

# 主要方法

  • detect():检查编码

# 代码测试

# encoding=utf-8

import logging
import chardet

logging.basicConfig(level = logging.DEBUG, format='%(levelname)s - %(message)s')

logger = logging.getLogger(__name__)

logger.debug(chardet.detect(b'hello world!'))

logger.debug(chardet.detect(r'离离原上草,一岁一枯荣'))
1
2
3
4
5
6
7
8
9
10
11
12

输出结果:

DEBUG - {'confidence': 1.0, 'language': '', 'encoding': 'ascii'}
DEBUG - {'confidence': 0.99, 'language': '', 'encoding': 'utf-8'}
1
2

# 实际运行案例

在采集网页时,可能遇到gb2312编码的页面,可利用chardet判断,例如:

try:
	# 获取文章编码(中文编码特殊处理)
	res_code = chardet.detect(res)
	if res_code.get('encoding').lower() == 'gb2312':
		res = res.decode('gbk', 'ignore')
except Exception as e:
	print('GB2312编码处理失败 错误%s' % str(e))
1
2
3
4
5
6
7
#Python
上次更新: 2022/12/01, 11:09:34
Python之装饰器
Python之copy模块使用

← Python之装饰器 Python之copy模块使用→

最近更新
01
常用游戏反外挂技术总结
11-27
02
Golang开发实践万字总结
11-11
03
Redis万字总结
10-30
更多文章>
Theme by Vdoing | Copyright © 2011-2022 Ravior | 粤ICP备17060229号-3 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式