zoukankan      html  css  js  c++  java
  • Python 插件杂谈 (1) ---- chardet

     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,终于写完一贴。你有没有得到帮助呢?如果有的话呢,请给我一个回复吧,给我个小小的鼓励,谢谢!

  • 相关阅读:
    VUE 引入element ui 样式不生效解决
    Spark项目故障思路整理总结
    Spark-环境安装
    01.Kettle的安装-千亿级数仓环境搭建
    千亿级数仓day01-项目的简介
    Umeng项目day04
    Umengday12-统计指标
    Umengday11-azkaban调度
    Umengday09-hive自定义UDTF函数叉分函数
    Docker配置jdk1.8
  • 原文地址:https://www.cnblogs.com/mmix2009/p/3227291.html
Copyright © 2011-2022 走看看