chardet
字串編碼一直是令人非常頭疼的問題,尤其是我們在處理一些不規範的第三方網頁的時候。雖然python提供了unicode表示的str
和bytes
兩種資料型別,並且可以通過encode()
和decode()
方法轉換,但是,在不知道編碼的情況下,對bytes
做decode()
不好做。
對於未知編碼的bytes
,要把它轉換成str
,需要先「猜測」編碼。猜測的方式是先收集各種編碼的特徵字元,根據特徵字元判斷,就能有很大概率「猜對」。
當然,我們肯定不能從頭自己寫這個檢測編碼的功能,這樣做費時費力。chardet這個第三方庫正好就派上了用場。用它來檢測編碼,簡單易用。
如果安裝了anaconda,chardet就已經可用了。否則,需要在命令列下通過pip安裝:
$ pip install chardet
如果遇到permission denied安裝失敗,**上sudo重試。
當我們拿到乙個bytes
時,就可以對其檢測編碼。用chardet檢測編碼,只需要一行**:
>>> chardet.detect(b'hello, world!')
檢測出的編碼是ascii
,注意到還有個confidence
字段,表示檢測的概率是1.0(即100%)。
我們來試試檢測gbk編碼的中文:
>>> data = '離離原上草,一歲一枯榮'.encode('gbk')
>>> chardet.detect(data)
檢測的編碼是gb2312
,注意到gbk是gb2312的超集,兩者是同一種編碼,檢測正確的概率是74%,language
字段指出的語言是'chinese'
。
對utf-8編碼進行檢測:
>>> data = '離離原上草,一歲一枯榮'.encode('utf-8')
>>> chardet.detect(data)
我們再試試對日文進行檢測:
>>> data = '最新の主要ニュース'.encode('euc-jp')
>>> chardet.detect(data)
可見,用chardet檢測編碼,使用簡單。獲取到編碼後,再轉換為str
,就可以方便後續處理。
chardet支援檢測的編碼列表請參考官方文件supported encodings。
使用chardet檢測編碼非常容易,chardet支援檢測中文、日文、韓文等多種語言。
第三方模組
參考 第三方模組 requestsimport requests 對於帶引數的url,傳入乙個dict作為params引數 params 要傳入http header時,我們傳入乙個dict作為headers引數 請求中傳入cookie,只需準備乙個dict傳入cookies引數 my cookie...
Python常用第三方模組
requests kenneth reitz寫的最富盛名的http庫。每個python程式設計師都應該有它。wxpython python的乙個gui 圖形使用者介面 工具。pillow 它是pil python圖形庫 的乙個友好分支。對於使用者比pil更加友好,對於任何在圖形領域工作的人是必備的庫...
常用的第三方模組 requests url
我們已經講解了python內建的urllib模組,用於訪問網路資源。但是,它用起來比較麻煩,而且,缺少很多實用的高階功能。更好的方案是使用requests。它是乙個python第三方庫,處理url資源特別方便。如果安裝了anaconda,requests就已經可用了。否則,需要在命令列下通過pip安...