99热婷婷-99热网-99热网址-99热亚洲-国产精品v欧美精品∨日韩-国产精品videosse

歡迎您訪問簡單用法與高級用法:chardet 模塊的詳細介紹!

簡單用法與高級用法:chardet 模塊的詳細介紹

更新時間:2024-10-01 20:07:52作者:佚名

chardet的使用非常簡單。主模塊中只有一個檢測功能。 detector 有一個參數,要求其類型為 bytes。 bytes類型可以通過讀取網頁內容、open函數的rb模式、b前綴的字符串、encode函數等獲取。

示例代碼:

import chardet
some_string = '你好,世界。'.encode('utf-8') # encode方法返回一個bytes
# b'\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x8c\xe4\xb8\x96\xe7\x95\x8c\xe3\x80\x82'
result = chardet.detect(some_string) # 調用檢測接口
print(result)
# {'encoding': 'utf-8', 'confidence': 0.99}

如上所示,檢測函數返回一個包含兩個鍵值對的字典。其中之一的鍵值是encoding,表示chardet推斷的編碼格式。另一個關鍵價值是信心,它代表可信度??尚哦仁?0 到 1 之間的浮點值,0 表示不可信,1 表示 100% 可信。

高級用法

當用于檢測的文檔特別大時使用方法的英文,可以使用chardet的子模塊chardet.universal detector。該模塊允許我們多次檢測文本的編碼格式(逐行讀取或逐行讀取),并在達到一定閾值時提前退出檢測。這樣可以有效節省資源,提高程序效率,保證測試結果的準確性。

示例代碼:

from chardet.universaldetector import UniversalDetector
detector = UniversalDetector() # 初始化一個UniversalDetector對象
f = open('test.txt', 'rb') # test.txt是一個utf-8編碼的文本文檔
for line in f:
    detector.feed(line) # 逐行載入UniversalDetector對象中進行識別
    if detector.done: # done為一個布爾值,默認為False,達到閾值時變為True
        break
detector.close() # 調用該函數做最后的數據整合
f.close()
print(detector.result)
# {'confidence': 1.0, 'encoding': 'UTF-8-SIG'}

需要注意的是使用方法的英文,如果檢測到來自多個不同來源的文本,則每次檢測完成后都必須調用一次UniversalDetector對象的reset函數,以清除之前的檢測數據。否則,后續的測試結果將會混亂。

目前支持的編碼格式

通用編碼檢測器目前支持以下編碼格式:

注:由于內部相似性,在某些情況下可能會出現檢測錯誤。最常見的問題是匈牙利語,報告的編碼是兩者中的另一個。希臘語檢測也經常將 ISO-8859-7 錯誤地識別為匈牙利語 ISO-8859-2。

關于檢測過程中出現的奇怪錯誤

該模塊在檢測ANSI編碼(中文版Windows系統上為gbk)時會出現一些奇怪的錯誤。博主正在研究英文文檔,希望能在那里找到答案。如有后續,本文將同步更新。

從上面繼續:

問題根源:某些情況下,檢測ANSI編碼的文本文檔和gb2312編碼的字節包時可能會出現錯誤。

過程:博主測試了不同情況下輸入的字節包網校頭條,不同長度,不同編碼。并仔細閱讀官方文檔。我大概想出了一個主意。

分析:官方文檔中有一段話,我先從原文中摘錄一下。

如果 UniversalDetector 檢測到文本中的高位字符,但其他多字節或單字節編碼探測器都沒有返回可信結果,它會創建一個 Latin1Prober(在 latin1prober.py 中定義)來嘗試檢測windows-1252 編碼。這種檢測本質上是不可靠的,因為英文字母在許多不同的編碼中都以相同的方式進行編碼。區分 windows-1252 的唯一方法是通過常用的符號,例如智能引號、彎撇號、版權符號等。 Latin1Prober 會自動降低其置信度,以便盡可能讓更準確的探測器獲勝。

大致意思是,當UniversalDetector解析某些字節時,如果沒有相應的檢測器給出報告,它會調用一個名為Latin1Prober的檢測器來嘗試使用英文編碼windows-1252來解析該字節包。這個檢測設備非常不可信(官方投訴……)。通常英文字母和一些特殊符號在不同的編碼中是相同的,因此該檢測器會給出很高的置信度。該檢測器將自動降低其置信度,以允許其他檢測器先通過。

根據以下原文:

檢測算法的主要入口點是universalDetector.py,它有一個類,UniversalDetector。 (您可能認為主要入口點是 chardet/init.py 中的檢測函數,但這實際上只是一個創建 UniversalDetector 對象、調用它并返回其結果的便利函數。)

大致意思是:檢測算法的入口是UniversalDetector,chardet.detect函數只是方便用戶使用的語法糖。

可以推斷,類似的機制也會出現在 detector 函數中。盡管 Latin1Prober 已經過優化,但在某些情況下,它給出的置信度仍然比實際情況高得多。例如這個實驗:

博主還做了其他幾個實驗,得出了一個結論:當字節包的長度不夠長時,chardet給出的結論非常不可靠,因為它可能會調用一個不相關的檢測器。 ,檢測器給出的置信度超過閾值,或者兩種編碼格式恰好有共同的字符,則不再進行進一步的檢測。這樣做很容易導致測試結果不可靠。因此最好不要檢測非常少量的字節。同時,當檢測到開頭有大段其他字符的文檔時,最好先手動處理不相關的符號(可能不會出現錯誤,因為程序會根據檢測器的順序來優先排序)初始遍歷的結果,但不能保證可能會出現錯誤)以獲得最準確的結果。

通用編碼檢測器的工作原理詳細解釋了該模塊的工作原理。建議懂英文并有耐心的讀者讀完。博主只是選擇性地、快速地閱讀了它。我不能保證將原作者的意思傳達給你,但我也可以保證偏差不會太大。

支持原創-->原文鏈接

為您推薦

2023年北華大學招生網錄取分數線

本期將為大家整理2023年北華大學各省??品謹稻€,以及2024年在各省的招生計劃人數。一、北華大學??其浫【€2023年北華大學專科招生在吉林省最低需要269分以上,最低分位次67500名,共招生154人。2024年北華大學只在吉林省招收專科批次考生。2024年北華大學??普猩鷮I及學費為:

2024-10-01 20:07

2017 廣東第二次學考 6 月 9 日進行,高考后仍可參加加分

廣東省高考志愿填報廣東省高考志愿填報流程2017年廣東高考志愿填報指南廣東省高考志愿填報要注意的事項【廣東省高考志愿填報】相關文章:廣東省高考填報志愿時間04-03高考如何填報志愿04-04安徽高考志愿填報04-03

2024-10-01 17:48

2017 廣東第二次學考 6 月 9 日進行,高考后仍可參加加分

廣東省高考志愿填報廣東省高考志愿填報流程2017年廣東高考志愿填報指南廣東省高考志愿填報要注意的事項【廣東省高考志愿填報】相關文章:廣東省高考填報志愿時間04-03高考如何填報志愿04-04安徽高考志愿填報04-03

2024-10-01 17:46

2017 廣東第二次學考 6 月 9 日進行,高考后仍可參加加分

廣東省高考志愿填報廣東省高考志愿填報流程2017年廣東高考志愿填報指南廣東省高考志愿填報要注意的事項【廣東省高考志愿填報】相關文章:廣東省高考填報志愿時間04-03高考如何填報志愿04-04安徽高考志愿填報04-03

2024-10-01 17:44

中考報名前必知!金堂實驗中學招生計劃及簡介全解析

中考報名之前,同學們一定要仔細的選擇學校,大家可以通過學校的官網,也可以通過學校的招生簡章來了解學校的大致情況。金堂實驗中學招生計劃金堂實驗中學簡介金堂實驗中學概況

2024-10-01 17:21

中考報名前必知!金堂實驗中學招生計劃及簡介全解析

中考報名之前,同學們一定要仔細的選擇學校,大家可以通過學校的官網,也可以通過學校的招生簡章來了解學校的大致情況。金堂實驗中學招生計劃金堂實驗中學簡介金堂實驗中學概況

2024-10-01 17:19

加載中...
主站蜘蛛池模板: 一区二区中文字幕在线观看 | 国产成人精品第一区二区 | 狠狠操影院 | 精品国产高清不卡毛片 | 国产亚洲欧洲国产综合一区 | 久久综合狠狠综合久久 | 婷婷香蕉| 久久99国产精品久久99软件 | 亚洲国产天堂久久综合图区 | 91在线视频精品 | 春色视频一区二区三区 | 国产精品视频区 | 欧美一级特黄aa大片婷婷 | 国产男女免费视频 | 欧美日韩中文亚洲另类春色 | 欧美亚洲国产成人精品 | 国产成人女人在线视频观看 | 黄色在线免费观看 | 在线观看国产情趣免费视频 | 国产精品1024永久观看 | 加勒比免费视频 | 欧美一级做一级做片性十三 | 在线精品视频免费观看 | 久久精品国产一区二区三区肥胖 | 国产亚洲一区呦系列 | 国产不卡福利 | 91国在线高清视频 | 久国产| 亚洲第一成网站 | 国产婷婷一区二区在线观看 | 欧美 xx性 在线 | 一级特黄色毛片免费看 | 免费精品美女久久久久久久久久 | 男人扒开女人腿使劲桶动态图 | 91视频中文 | 国产一区二区在免费观看 | 性欧美激情在线观看 | 久99久精品免费视频热77 | 91亚洲国产成人久久精品网站 | 国内精品久久久久久久999下 | 激情五月婷婷久久 |