【解决方案】chardet使用 自动识别检测文档文件编码方式 UnicodeDecodeError解决方案

在打开文件时,经常会遇到编码错误UnicodeDecodeError,确实有点棘手

UnicodeDecodeError: 'gbk' codec can't decode byte 0xaf in position 56: illegal multibyte sequence

有没有一种方式可以快速检测文件的编码方式
本文章介绍一种自动检测文件/网页编码的第三方工序chardet

chardet

引入

pip install chardet

使用

普通用法

读取文本

导入chartdet后,
使用chardet.detect检测二进制内容,
返回编码方式,及可信度

>>> import chardet
>>> with open("demo.txt", "rb") as f:
...     print(chardet.detect(f.read()))
...
{'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}
读取网页
>>> import chardet
>>> import urllib.request
>>> rawdata = urllib.request.urlopen('http://blog.csdn.net/').read()
>>> chardet.detect(rawdata)
{'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}

高级用法

识别的文件内容很大时,普通方式就回存在效率,性能上的不足。chardet提供了高级用法
示例:

from chardet.universaldetector import UniversalDetector

detector = UniversalDetector()
with open("demo.txt", "rb") as f:
    for line in f.readlines():
        detector.feed(line)
        if detector.done: 
            break

detector.close()
print(detector.result)  # {'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}

更多用法:链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值