python有趣的库_趣味至上主义:这5个有趣的Python库带你花式编码

本文转载自公众号“读芯术”(ID:AI_Discovery)

Python是如今最流行的编程语言之一,这点也给它本身带来很多好处,其中之一就是,为了方便进行程序开发,它拥有了大量优秀的库,如Pandas、Numpy、Matplotlib、SciPy等。

不过,本文不打算介绍那些以实用为主要“卖点”的库,而是带你走进一些极为有趣的库,这些库可以展示Python的另一面,也恰恰证明了Python社区的繁荣发展。

81870086052c243a0b879a563c257db3.jpeg-wh_651x-s_2918834694.jpeg

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)

输出就像这样:

be14284731c8388cce54fcb070769c13.jpeg

你也可以从文本文件中用散点图来绘制数据。

abdef46617b50857666eef8731d4edf4.jpeg

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)

f772fa63b080637e8fa0952a029ae1a8.jpeg

PrettyTable还支持改进表格样式,几乎包括可以想到的任何方面。例如,我们可以右对齐表格中的文字:

table.align='r'

print(table)

de790a4a11659abaa0b56d92f90e59f5.jpeg

按列对表格排序:

table.sortby="City"

print(table)

7f56b3ecb75e1bd7800cc24f79cad74a.jpeg

甚至可以得到表格的HTML字符串

2b2d52786c9156f25639fc2b0d0c07ab.jpeg

3. Colorama

想为命令行应用程序添加一些颜色吗?Colorama可以很容易地输出你喜欢的颜色。

23f3ccdc0f25112917afe2cb5d8da26b.jpeg

图源:unsplash

再一次使用pip安装Colorama:

Colorama支持在“前景”(文本颜色)、“背景”(背景颜色)和“风格”(额外的风格的颜色)中支持渲染输出颜色。可以导入:

fromcolorama import Fore, Back, Style

首先使用黄色显示一些警告:

9a9225fc17cf29456d9e299446d46845.jpeg

然后尝试使用红色背景显示一些错误:

print(Back.RED+ Fore.WHITE + "This is an error!")

dd2dda450cccf278c566e6d817f7a7af.jpeg

红色太艳了。使用“dim”风格。

print(Back.RESET+ Style.DIM + "Another error!")

此处设置“RESET”改变背景颜色为默认。

f224c43dc472c5a5459e99264cd4b62a.jpeg

“DIM”样式使字体不可见。若想把所有东西都恢复正常时,只需将“Style”设置为“RESET_ALL”:

print(Style.RESET_ALL)

a894683a51fc215d3b94523f221d18a8.jpeg

4. FuzzyWuzzy

很多时候,你可能想为程序实现一个“模糊”搜索功能,FuzzyWuzzy提供了一个开箱即用的轻量级解决方案。

和再去一样,使用pip安装:

pip installfuzzywuzzy

导入库:

fromfuzzywuzzy import fuzz

做个简单的测试:

fuzz.ratio("Let’sdo a simple test", "Let us do a simple test")

32575d09ec08b9c6a07a496223b6b472.jpg

如结果所示,“93”表示这两个字符串有93%的相似性,这相当高了。

当有一个字符串列表,想要搜索所有的字符串,FuzzyWuzzy将帮助提取最相关的字符串及其相似性。

fromfuzzywuzzy importprocesschoices= ["Data Visualisation", "DataVisualization", "Customised Behaviours", "CustomizedBehaviors"]process.extract("data visulisation", choices,limit=2)

process.extract("custom behaviour", choices, limit=2)

586e103d91abf76a0b597b6b6a4b1e65.jpeg

在上面的示例中,参数limit告诉FuzzyWuzzy提取“前n个”结果。否则将获得具有所有这些原始字符串及其相似性分数的元组列表。

5. TQDM

958074a3c82f36ee6ecfd6973efa1321.jpeg

图源:unsplash

你通常会使用Python来开发命令行工具吗?如果是的话一定要试试这个库。当CLI工具处理一些耗时的事情时,它将通过显示一个进度条来指示完成了多少工作,帮助你了解情况。

老办法,使用pip安装:

pipinstall tqdm

当for循环使用range函数时,只是把它替换为tqdm中的trange即可。

fromtqdm import trangefor i in trange(100):

sleep(0.01)

6488b397fa9c717e2373daad8f556828.jpeg

一般来说,对列表做循环。使用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。

6ef82264721bd627ab7e148172309177.jpg

图源:https://github.com/tqdm/tqdm

在看到Bashplotlib库之前,必须说笔者从来没有在命令行环境中绘制数据的想法。人类发展思想和创造力的多样性从来没有停止过,这让一切事物变得有趣起来。何不去试试呢?

6d6d3a897e7d5327414fbb243ddfaaba.jpg

【责任编辑:赵宁宁 TEL:(010)68476606】

点赞 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值