11个并不被常用但对开发非常有帮助的Python库


Posted in Python onMarch 31, 2015

近来,越来越多的数据科学家开始使用Python,我不由得想到,尽管他们从pandas、scikit-learn和numpy这些库中得到了不少好处,但是他们也许错过了一些也许较老但同样有帮助的Python库。

在这篇博文里,我将给大家推荐一些鲜为人知的库。即便你是Python高手,也应该看一看,其中的一到两个库可能是你从没见过的。
1)Delores

Dolorean是一个很酷的日期/时间库。除了名字好听之外,也是一个我曾用过的最舒心的日期/时间修改库。它有点像javascript的moment库,每次我导入它的时候都会想笑。文档也很棒,除了有技术指导外,他们还引用了《回到未来》的无数内容(来丰富文档)。
 

from delorean import Delorean
EST = "US/Eastern"
d = Delorean(timezone=EST)

11个并不被常用但对开发非常有帮助的Python库

2)prettytable

这个包被放到了GoogleCode上,所以你可能没听说过。GoogleCode现在就像西伯利亚一样荒凉。

尽管它被流放到了一个冰天雪地、荒无人烟的地方,prettytable仍旧是最棒的结构化输出的库,它能在终端或浏览器里构建良好的输出。因此,如果你正在用 IPython Notebook的新插件,建议你用prettytable来代替__repr__进行HTML输出。
 

from prettytable import PrettyTable
table = PrettyTable(["animal", "ferocity"])
table.add_row(["wolverine", 100])
table.add_row(["grizzly", 87])
table.add_row(["Rabbit of Caerbannog", 110])
table.add_row(["cat", -1])
table.add_row(["platypus", 23])
table.add_row(["dolphin", 63])
table.add_row(["albatross", 44])
table.sort_key("ferocity")
table.reversesort = True
+----------------------+----------+
|  animal  | ferocity |
+----------------------+----------+
| Rabbit of Caerbannog | 110 |
|  wolverine  | 100 |
|  grizzly  | 87 |
|  dolphin  | 63 |
|  albatross  | 44 |
|  platypus  | 23 |
|   cat   | -1 |
+----------------------+----------+

3)snowballstemmer

我当初装snowballstemmer,是因为我觉得这个名字很酷炫。但它的确是一个小巧好使的包。snowballstemmer通过porter stemmer算法来提取15种语言的单词词干。
 
from snowballstemmer import EnglishStemmer, SpanishStemmer
EnglishStemmer().stemWord("Gregory")
# Gregori
SpanishStemmer().stemWord("amarillo")
# amarill
4)wget

还记得你每次都为特定的目标写web爬虫么?以后我们可以用其他办法来完成了,那就是wget.想要以递归的方式下载所有页面?想要抓取页面上的每张图?想要避免cookie追踪?wget可以给你想要的一切。

马克·扎格伯格的电影里它自己都说

    从柯克兰(寝室名)开始,这里的一切公共目录都是公开的,还允许在Apache系统里插入目录。所以用个wget就能下载柯克兰全部的照片库里的图片了。易如反掌!

11个并不被常用但对开发非常有帮助的Python库

    这个页面有你想问的关于这个库的一切问题,而且它很易用。
 

import wget
wget.download("<a href="http://www.cnn.com/">http://www.cnn.com/</a>")
# 100% [............................................................................] 280385 / 280385

linux和osx的用户还会用到另一个选项:from sh import wget。不过Python wget模块还有更好的参数处理。
5)PyMC

我不记得是怎么得到PyMC包的了。scikit-learn似乎是所有人的宠儿(它应得的,它太出色了),但是依我看来,PyMC更有魅力。
 

from pymc.examples import disaster_model
from pymc import MCMC
M = MCMC(disaster_model)
M.sample(iter=10000, burn=1000, thin=10)
[-----------------100%-----------------] 10000 of 10000 complete in 1.4 sec

你还不清楚它是干嘛的?那我告诉你,PyMC主要用来做贝叶斯定理分析。它的特点在Cam Davidson-Pilon的Bayesian Methods for Hackers里着重介绍过,它在许多流行的数据科学/python博客上也是一颗闪耀的钻石,但是它从来没得到过像它的同类scikit-learn一样的狂热追捧。
6)sh

我不能在你还不知道sh库的情况下,就让你离开。sh用来将shell命令导入到Python中。在bash它超有用,但在Python里你可能就不住怎么使用(即递归搜索文件)。
 

from sh import find
find("/tmp")
/tmp/foo
/tmp/foo/file1.json
/tmp/foo/file2.json
/tmp/foo/file3.json
/tmp/foo/bar/file3.json

7)fuzzywuzzy

这是我用过的能排在前十里的最简单的库。(如果你有2、3分钟,你可以读一下这个资源),fuzzywuzzy 是一个字符串模糊匹配的库,它由SeatGeek上的开发者建立。

fuzzywuzzy实现了字符串的相似率,令牌比和许多其他的匹配模式。它也可以用来创建特征向量或者匹配不同数据库的记录。
 

from fuzzywuzzy import fuzz
fuzz.ratio("Hit me with your best shot", "Hit me with your pet shark")
# 85

8)progressbar

在你调用__main__循环的时候,你用过print "still going...” 这样的提示么?你知道么,这样会感觉特别low。想要找东西替代它么?为什么不用progressbar来提升你游戏的档次呢?

如你所想,progressbar在针对精确数据的时候效果很好,它提供了一个文本模式的progressbar。但即便是一个变动的不精确数据,使用它也比用那些很长的脚本好。

唉,这又是一个GoogleCode的牺牲品,它没有受到太多关注(文档有两个空格的缩进)。用pip install可以安装它。
 

from progressbar import ProgressBar
import time
pbar = ProgressBar(maxval=10)
for i in range(1, 11):
 pbar.update(i)
 time.sleep(1)
pbar.finish()
# 60% |########################################################          |

9)colorama

在你用progressbar打印日志时,为什么不给它们加上颜色呢!实际上,当出现重大错误时,它能很快的给你提醒。

colorama很容易使用。只要把它写进你的脚本,添加到想要打印的文本之前:

colorama-red
10)uuid

对于我来说,编程中真正需要的工具只有那么几个:哈希,键值对存储,和通用唯一标识符。uuid就是Python的一个UUID包。它实现了UUID standards标准的1,3,4,5版本。在确保唯一性上真的很方便。

这听起来可能会有点傻,但你有多少次想要给市场营销的(销售货物)加上唯一的促销代码?或着给e-mail收件人加上唯一的id号?

如果你担心耗尽ids,完全不用!UUID的可以生成原子数据。
 

import uuid
print uuid.uuid4()
# e7bafa3d-274e-4b0a-b9cc-d898957b4b61

11个并不被常用但对开发非常有帮助的Python库

如果你是UUID,你可能会这么想~~~~~
11)bashplotlib

不要脸的毛遂自荐一下,bashplotlib是我创建的一个库。它通过标准输入绘制出柱状图和散点图。当然,你不需要考虑用它来替代ggplot或matplotlib来作为你每天绘图的包,只要作为新奇玩意试试就好。但至少,你可以使用它把你的日志文件弄的好看点。
 

$ pip install bashplotlib
$ scatter --file data/texas.txt --pch x

11个并不被常用但对开发非常有帮助的Python库

Python 相关文章推荐
Python笔记(叁)继续学习
Oct 24 Python
Python中exit、return、sys.exit()等使用实例和区别
May 28 Python
详解Python的Django框架中manage命令的使用与扩展
Apr 11 Python
使用Python实现windows下的抓包与解析
Jan 15 Python
儿童学习python的一些小技巧
May 27 Python
python文件转为exe文件的方法及用法详解
Jul 08 Python
Django对接支付宝实现支付宝充值金币功能示例
Dec 17 Python
如何基于Python + requests实现发送HTTP请求
Jan 13 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
Apr 27 Python
Python使用configparser读取ini配置文件
May 25 Python
Python中的wordcloud库安装问题及解决方法
May 27 Python
Django框架实现在线考试系统的示例代码
Nov 30 Python
Python的Flask框架中@app.route的用法教程
Mar 31 #Python
使用Python的Flask框架实现视频的流媒体传输
Mar 31 #Python
在Python3中初学者应会的一些基本的提升效率的小技巧
Mar 31 #Python
使用IronPython把Python脚本集成到.NET程序中的教程
Mar 31 #Python
提升Python程序运行效率的6个方法
Mar 31 #Python
用Python从零实现贝叶斯分类器的机器学习的教程
Mar 31 #Python
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
Mar 31 #Python
You might like
在DC的漫画和电影中,蝙蝠侠的宿敌,小丑的真名是什么?
2020/04/09 欧美动漫
解决php中Cannot send session cache limiter 的问题的方法
2007/04/27 PHP
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
2015/06/17 PHP
PHP实现的日历功能示例
2018/09/01 PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
2019/01/17 PHP
PHP 代码简洁之道(小结)
2019/10/16 PHP
jquery Tab效果和动态加载的简单实例
2013/12/11 Javascript
常见浏览器多长时间会提示“脚本运行时间过长”总结
2014/04/29 Javascript
异步JavaScript编程中的Promise使用方法
2015/07/28 Javascript
js实现按钮控制带有停顿效果的图片滚动
2016/08/30 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
webpack打包后直接访问页面图片路径错误的解决方法
2017/06/17 Javascript
jQuery接受后台传递的List的实例详解
2017/08/02 jQuery
vue项目中实现图片预览的公用组件功能
2018/10/26 Javascript
基于layui的下拉列表的数据回显方法
2019/09/24 Javascript
Vue中rem与postcss-pxtorem的应用详解
2019/11/20 Javascript
python版本的读写锁操作方法
2016/04/25 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
使用Python绘制图表大全总结
2017/02/11 Python
纯python实现机器学习之kNN算法示例
2018/03/01 Python
Python 读取某个目录下所有的文件实例
2018/06/23 Python
详解如何用django实现redirect的几种方法总结
2018/11/22 Python
python安装pil库方法及代码
2019/06/25 Python
python函数声明和调用定义及原理详解
2019/12/02 Python
Python 中如何实现参数化测试的方法示例
2019/12/10 Python
pycharm2020.1.2永久破解激活教程,实测有效
2020/10/29 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
如何使用Python进行PDF图片识别OCR
2021/01/22 Python
东南亚排名第一的服务市场:kaodim
2019/03/28 全球购物
国际金融专业大学生职业生涯规划书
2013/12/28 职场文书
酒店管理毕业生自我鉴定
2014/03/02 职场文书
水利水电专业自荐信
2014/07/08 职场文书
师德标兵先进事迹材料
2014/12/19 职场文书
该怎么书写道歉信?
2019/07/03 职场文书
导游词之藏龙百瀑景区
2019/12/30 职场文书