这5个有趣的Python库带你花式编码!
云栖号资讯:【点击查看更多行业资讯】
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!
Python是如今最流行的编程语言之一,这点也给它本身带来很多好处,其中之一就是,为了方便进行程序开发,它拥有了大量优秀的库,如Pandas、Numpy、Matplotlib、SciPy等。
不过,本文不打算介绍那些以实用为主要“卖点”的库,而是带你走进一些极为有趣的库,这些库可以展示Python的另一面,也恰恰证明了Python社区的繁荣发展。
1. Bashplotlib
Bashplotlib是一个Python库,使得能够在命令行stdout环境中绘制数据。老实说,第一次看到这个库的时候,笔者很疑惑,我们为什么可能会需要这样的库?
很快笔者就意识到,当没有任何可用的GUI时,它可能会很有用。这个情况可不太常见,它引起了笔者的好奇心。我这是一个非常有趣的Python库。
使用pip就可以很容易地安装Bashplotlib:
pipinstall bashplotlib
来看一些例子。在下面的代码中,导入了numpy来生成一些随机数组,当然还有bashplotlib。
importnumpy as np from bashplotlib.histogram import plot_hist arr = np.random.normal(size=1000, loc=0, scale=1)
plot_hist是bashplotlib的一个函数,用于在直方图中绘制一维数据,就像plt.hist在Matplotlib中的功能一样。然后,使用Numpy生成一个包含1,000个服从正态分布的数字组成的随机数组。在此之后,可以很容易地绘制这些数据:
plot_hist(arr, bincount=50)
输出就像这样:
你也可以从文本文件中用散点图来绘制数据。
2. PrettyTable
Bashplotlib在命令行环境中绘制数据,而PrettyTable以一种好看的格式绘制输出结果表。
同样的,使用pip可以很容易地安装这个库:
pipinstall prettytable
首先,导入这个库:
from prettytable import PrettyTable
然后,使用PrettyTable创建表格对象:
table =PrettyTable()
一旦创建表格对象,就可以开始添加域和数据列了:
table.field_names= [ Name , Age , City ] table.add_row(["Alice", 20, "Adelaide"]) table.add_row(["Bob", 20, "Brisbane"]) table.add_row(["Chris", 20, "Cairns"]) table.add_row(["David", 20, "Sydney"]) table.add_row(["Ella", 20, "Melbourne"])
只需打印就可显示表格:
print(table)
PrettyTable还支持改进表格样式,几乎包括可以想到的任何方面。例如,我们可以右对齐表格中的文字:
table.align= r print(table)
按列对表格排序:
table.sortby= "City" print(table)
甚至可以得到表格的HTML字符串
3. Colorama
想为命令行应用程序添加一些颜色吗?Colorama可以很容易地输出你喜欢的颜色。
再一次使用pip安装Colorama:
pipinstall colorama
Colorama支持在“前景”(文本颜色)、“背景”(背景颜色)和“风格”(额外的风格的颜色)中支持渲染输出颜色。可以导入:
fromcolorama import Fore, Back, Style
首先使用黄色显示一些警告:
然后尝试使用红色背景显示一些错误:
print(Back.RED+ Fore.WHITE + "This is an error!")
红色太艳了。使用“dim”风格。
print(Back.RESET+ Style.DIM + "Another error!")
此处设置“RESET”改变背景颜色为默认。
“DIM”样式使字体不可见。若想把所有东西都恢复正常时,只需将“Style”设置为“RESET_ALL”:
print(Style.RESET_ALL)
4. FuzzyWuzzy
很多时候,你可能想为程序实现一个“模糊”搜索功能,FuzzyWuzzy提供了一个开箱即用的轻量级解决方案。
和再去一样,使用pip安装:
pip installfuzzywuzzy
导入库:
fromfuzzywuzzy import fuzz
做个简单的测试:
fuzz.ratio("Let’sdo a simple test", "Let us do a simple test")
如结果所示,“93”表示这两个字符串有93%的相似性,这相当高了。
当有一个字符串列表,想要搜索所有的字符串,FuzzyWuzzy将帮助提取最相关的字符串及其相似性。
fromfuzzywuzzy import processchoices = ["Data Visualisation", "DataVisualization", "Customised Behaviours", "CustomizedBehaviors"]process.extract("data visulisation", choices,limit=2) process.extract("custom behaviour", choices, limit=2)
在上面的示例中,参数limit告诉FuzzyWuzzy提取“前n个”结果。否则将获得具有所有这些原始字符串及其相似性分数的元组列表。
5. TQDM
你通常会使用Python来开发命令行工具吗?如果是的话一定要试试这个库。当CLI工具处理一些耗时的事情时,它将通过显示一个进度条来指示完成了多少工作,帮助你了解情况。
老办法,使用pip安装:
pipinstall tqdm
当for循环使用range函数时,只是把它替换为tqdm中的trange即可。
fromtqdm import trangefor i in trange(100): sleep(0.01)
一般来说,对列表做循环。使用tqdm也很容易。
fromtqdm import tqdm for e in tqdm([1,2,3,4,5,6,7,8,9]): sleep(0.5) # Suppose we are doing something with theelements
tqdm不仅适用于命令行环境,还适用于iPython / Jupyter Notebook。
在看到Bashplotlib库之前,必须说笔者从来没有在命令行环境中绘制数据的想法。人类发展思想和创造力的多样性从来没有停止过,这让一切事物变得有趣起来。何不去试试呢?
【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/live立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
ES7学习笔记(十二)高亮 和 搜索建议
ES当中大部分的内容都已经学习完了,今天呢算是对前面内容的查漏补缺,把ES中非常实用的功能整理一下,在以后的项目开发中,这些功能肯定是对你的项目加分的,我们来看看吧。 高亮 高亮在搜索功能中是十分重要的,我们希望搜索的内容在搜索结果中重点突出,让用户聚焦在搜索的内容上。我们看看在ES当中是怎么实现高亮的,我们还用之前的索引ik_index,前面的章节,我们搜索过香蕉好吃,但是返回的结果中并没有高亮,那么想要在搜索结果中,对香蕉好吃高亮该怎么办呢?我们看看, POST /ik_index/_search { "query": { "bool": { "must": { "match": { "desc": "香蕉好吃" } } } }, "highlight": { "fields": { "desc": {} } } } 我们重点看一下请求体中的highlight部分,这部分就是对返回结果高亮的设置,fields字段中,指定哪些字段需要高亮,我们指定了desc字段,执行一下,看看结果吧。 { "took": 73, "timed_out": false, "_shards": { "t...
- 下一篇
Hegel:励志成为最好的 JavaScript 静态类型检查器
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! Hegel 作为 JavaScript 类型检查器中的新秀,励志要成为最好的 JavaScript 静态类型检查器。它宣称提供了一个具备强类型推断的可靠的类型系统。目前 Hegel 还在 alpha 测试阶段,大家可以在其提供的专用在线练习场进行功能体验。 Hegel 是一个类型注解可选的 JavaScript 类型检查器,同时它和 TypeScript 一样,使用者不需要重新学习一门新的语言结构,只需要掌握注解的语法。Hegel 希望通过强大的、稳定的类型系统,尽量避免程序在运行时由于类型错误产生的异常。下面的代码展示了其强大的类型检查能力: // 定义 numbers 的类型为 Array<number> const numbers: Array<number> = []; // 将 numbers 变量赋值给 numbersOrStrings, 但其类型为 Array<string | number> // Hegel 会检查出类型错误: // ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8编译安装MySQL8.0.19
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路