它本身带来了很多好处,其中之一就是它拥有大量优秀的库,如Pandas、Numpy、Matplotlib、SciPy等,方便程序开发。不过,本文并不打算介绍那些以实用为主要“卖点”的库,而是带你走进一些极其有趣的库,它们可以展现Python的另一面,这恰恰证明了Python社区正在蓬勃发展。1.BashplotlibBashplotlib是一个Python库,可以在命令行标准输出环境中绘制数据。老实说,我第一次看到这个库的时候,我想知道为什么我们可能需要这样一个库?没过多久我就意识到在没有任何GUI可用时它可能很有用。这种情况并不常见,引起了笔者的好奇。这是一个非常有趣的Python库。Bashplotlib可以使用pip轻松安装:pipinstallbashplotlib查看一些示例。在下面的代码中,导入了numpy来生成一些随机数组,当然还有bashplotlib。importnumpyasnpfrombashplotlib.histogramimportplot_histarr=np.random.normal(size=1000,loc=0,scale=1)plot_hist是bashplotlib的一个函数,用于在直方图中绘制一维数据,就像Matplotlib中plt.hist的函数一样。然后,使用Numpy生成一个包含1,000个正态分布数字的随机数组。在此之后,可以轻松绘制数据:plot_hist(arr,bincount=50)输出如下所示:您还可以使用文本文件中的散点图绘制数据。2.PrettyTableBashplotlib在命令行环境下绘制数据,而PrettyTable则是以nice格式绘制输出结果表。同样,可以使用pip轻松安装此库:pipinstallprettytable首先,导入此库:fromprettytableimportPrettyTable然后,使用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)甚至可以得到表3.Colorama想要为您的命令行应用程序添加一些颜色吗?Colorama可以轻松输出您喜欢的颜色。图片来源:unsplash使用pip再次安装Colorama:Colorama支持渲染输出颜色为“foreground”(文本颜色)、“background”(背景颜色)和“style”(额外样式颜色)。可以导入:fromcoloramaimportFore,Back,Style首先用黄色显示一些警告:然后尝试用红色背景显示一些错误:print(Back.RED+Fore.WHITE+"Thisisanerror!")红色太亮了。使用“昏暗”风格。print(Back.RESET+Style.DIM+"Anothererror!")在这里设置“RESET”,将背景颜色更改为默认颜色。“DIM”样式使字体不可见。如果你想恢复一切正常,只需将“Style”设置为“RESET_ALL”即可:print(Style.RESET_ALL)4.FuzzyWuzzy很多时候,你可能想为程序实现一个“模糊”的搜索功能,FuzzyWuzzy提供了一个轻量级的开箱即用的解决方案。同上一遍,使用pip安装:pipinstallfuzzywuzzy导入库:fromfuzzywuzzyimportfuzz做个简单的测试:fuzz.ratio("Let'sdoasimpletest","Letusdoasimpletest")结果如图,"93"表示两个字符串有93%相似度,相当高。当您有一个字符串列表并想要搜索所有字符串时,FuzzyWuzzy将帮助提取最相关的字符串及其相似性。fromfuzzywuzzyimportprocesschoices=["DataVisualisation","DataVisualization","CustomisedBehaviours","CustomizedBehaviors"]process.extract("datavisulisation",choices,limit=2)process.extract("custombehaviour",choices,limit=2)在上面在示例中,参数limit告诉FuzzyWuzzy提取“前n个”结果。否则你会得到一个包含所有这些原始字符串及其相似度分数的元组列表。5.TQDM来源:unsplash你平时用Python开发命令行工具吗?如果是这样,您必须尝试这个库。当CLI工具正在处理一些耗时的事情时,它会通过显示进度条来指示已完成的工作量,从而帮助您了解情况。老办法,用pip安装:pipinstalltqdmfor循环使用range函数时,在tqdm中用trange替换即可。fromtqdmimporttrangeforiintrange(100):sleep(0.01)通常,遍历列表。使用tqdm也很容易。fromtqdmimporttqdmforeintqdm([1,2,3,4,5,6,7,8,9]):sleep(0.5)#Supposewaredoingsomethingwiththeelementsstqdm不仅适用于命令行环境,也适用于iPython/JupyterNotebook。来源:https://github.com/tqdm/tqdm在看到Bashplotlib库之前,不得不说笔者从来没有在命令行环境下绘制数据的想法。人类永远不会停止发展思想和创造力的多样性,这使一切都变得有趣。为什么不试试呢?
