Python 外掛程式雜談 (1) —- chardet

來源:互聯網
上載者:User

 Python做為一門應用廣泛,粉絲眾多的語言。吸引了無數的開發人員為其添磚加瓦。筆者使用python逾一個月,就接觸了許多 python外掛程式,寫篇文章,僅做記錄.
    第一個介紹的是 chardet. chardet是為了探測python中字元集問題而開發的外掛程式。

  1. >>> import urllib
  2. >>> urlread = lambda url: urllib.urlopen(url).read()
  3. >>> import chardet
  4. >>> chardet.detect(urlread("http://google.cn/"))
  5. {'encoding': 'GB2312', 'confidence': 0.99}

複製代碼

  先介紹一下,urllib 是 python 中擷取網頁內容的外掛程式。  使用urllib.open(url).read() 可以擷取網頁內容。 lambda 我想大家都瞭解了,是python基本文法,有點像java的匿名函數。
   言歸正傳,使用 chardet.detect() 可以 “猜測” 一段記憶體中字元段的編碼。 為什麼說 猜測, 因為字元集與字元集之間並非一點都不同。而是有部分一樣,有部分不一樣。不管是 vim 還是 emacs ,幾乎在查看文本編碼的時候都是靠猜的。 看python的輸出,就可以看到,它覺得 99%的機率,這個字元集是 GB2312.
   下面看一段進階應用程式:

  1. import urllib
  2. from chardet.universaldetector import UniversalDetector
  3. usock = urllib.urlopen('http://yahoo.co.jp/')
  4. detector = UniversalDetector()
  5. for line in usock.readlines():
  6.     detector.feed(line)
  7.     if detector.done: break
  8. detector.close()
  9. usock.close()
  10. print detector.result
  11. {'encoding': 'EUC-JP', 'confidence': 0.99}   

複製代碼

 

     應用背景是,如果需要大量地偵測,那麼頻繁調用 detect() 方法就會降低效率。那麼這時候,可以使用全域的detect, 即通過迴圈的方式不斷地用 feed() 方法 加入字串,達到高效率的最低要求,就會調用  detect() 函數檢測 ,把 UniversalDetector  對象的 done 置為 True.  這時候查看 result 屬性,就可以知道結果啦!

   以上是我使用chardet的心得,希望對大家能有 協助。我的敘述如果有問題,請大家看英語文檔吧,具體地址在這裡: chardet 文檔
   最後奉上外掛程式,  。 至於安裝,就是解壓後,執行檔案夾裡的 setup.py . 命令如下:
python  setup.py  install
   OK,終於寫完一貼。你有沒有得到協助呢?如果有的話呢,請給我一個回複吧,給我個小小的鼓勵,謝謝!

   轉載文章,請註明來自: 米趣網

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.