Python中動(dòng)態(tài)檢測編碼chardet的使用教程
前言
在互聯(lián)網(wǎng)的世界里,每個(gè)頁面都使用了編碼,但是形形色色的編碼讓我們的代碼何以得知其棉麻格式呢?charset將很好的解決這個(gè)問題。
1. chardet
chardet是Python社區(qū)提供了一個(gè)類庫包,方便我們在代碼中動(dòng)態(tài)檢測當(dāng)前頁面或者文件中的編碼格式信息。接口非常的簡單和易用。
Project主頁: https://github.com/chardet/chardet
本地下載地址:http://xiazai.jb51.net/201707/yuanma/chardet(jb51.net).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))
輸出結(jié)果:
{'confidence': 0.99, 'encoding': 'utf-8'}
結(jié)果分析, 其準(zhǔn)確率99%的概率,編碼格式為utf-8
使用說明:detect()
為其關(guān)鍵方法
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)
輸出結(jié)果:
{'confidence': 0.99, 'encoding': 'utf-8'}
說明: 為了提高預(yù)測的準(zhǔn)確性,基于dector.feed()
來實(shí)現(xiàn)持續(xù)的信息輸入,在信息足夠充足之后結(jié)束信息輸入,給出相應(yīng)的預(yù)測和判斷。
如果需要復(fù)用detector方法,需要進(jìn)行detector.reset()
進(jìn)行重置,從而可以復(fù)用。
Case 3: 在安裝chardet之后,可以基于命令行來檢測文件編碼
% chardetect somefile someotherfile somefile: windows-1252 with confidence 0.5 someotherfile: ascii with confidence 1.0
在系統(tǒng)層面,可以直接基于命令行來進(jìn)行文件編碼檢測,非常簡單易用。
3. 總結(jié)
chardet是非常易用和功能強(qiáng)大的Python包,相信大家在web世界中遨游之時(shí),肯定會(huì)用上這個(gè)chardet的。 如有問題,歡迎大家反饋給我。
好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
基于Django框架利用Ajax實(shí)現(xiàn)點(diǎn)贊功能實(shí)例代碼
點(diǎn)贊這個(gè)功能是我們現(xiàn)在經(jīng)常會(huì)遇到的一個(gè)功能,下面這篇文章主要給大家介紹了關(guān)于基于Django框架利用Ajax實(shí)現(xiàn)點(diǎn)贊功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08Python實(shí)現(xiàn)霍夫圓和橢圓變換代碼詳解
這篇文章主要介紹了Python實(shí)現(xiàn)霍夫圓和橢圓變換代碼詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01利用Pandas實(shí)現(xiàn)對數(shù)據(jù)進(jìn)行移動(dòng)計(jì)算
這篇文章主要為大家詳細(xì)介紹了如何利用Pandas實(shí)現(xiàn)對數(shù)據(jù)進(jìn)行移動(dòng)計(jì)算,文中的示例代碼講解詳細(xì),對我們了解Pandas有一定幫助,需要的可以參考一下2022-07-07python端口掃描系統(tǒng)實(shí)現(xiàn)方法
這篇文章主要介紹了python端口掃描系統(tǒng)實(shí)現(xiàn)方法,可實(shí)現(xiàn)簡單的外網(wǎng)IP掃描及寫入MySQL數(shù)據(jù)庫等功能,需要的朋友可以參考下2014-11-11Flask項(xiàng)目的部署的實(shí)現(xiàn)步驟
本文主要介紹了Flask項(xiàng)目的部署的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04Python 類與元類的深度挖掘 I【經(jīng)驗(yàn)】
super() 方法解決了類->實(shí)例實(shí)踐過程中關(guān)于命名空間的一些問題,而關(guān)于生成對象的流程,我們知道初始化實(shí)例是通過類的 __init__() 方法完成的,在此之前可能涉及到一些其它的準(zhǔn)備工作,包括接下來提到的 mro() 方法以及關(guān)鍵的元類->類的過程2016-05-05