趣味至上主義:這5個有趣的Python庫帶你花式編碼
本文轉(zhuǎn)載自公眾號“讀芯術(shù)”(ID:AI_Discovery)
Python是如今最流行的編程語言之一,這點也給它本身帶來很多好處,其中之一就是,為了方便進行程序開發(fā),它擁有了大量優(yōu)秀的庫,如Pandas、Numpy、Matplotlib、SciPy等。
不過,本文不打算介紹那些以實用為主要“賣點”的庫,而是帶你走進一些極為有趣的庫,這些庫可以展示Python的另一面,也恰恰證明了Python社區(qū)的繁榮發(fā)展。
1. Bashplotlib
Bashplotlib是一個Python庫,使得能夠在命令行stdout環(huán)境中繪制數(shù)據(jù)。老實說,第一次看到這個庫的時候,筆者很疑惑,我們?yōu)槭裁纯赡軙枰@樣的庫?
很快筆者就意識到,當(dāng)沒有任何可用的GUI時,它可能會很有用。這個情況可不太常見,它引起了筆者的好奇心。我這是一個非常有趣的Python庫。
使用pip就可以很容易地安裝Bashplotlib:
- pipinstall bashplotlib
來看一些例子。在下面的代碼中,導(dǎo)入了numpy來生成一些隨機數(shù)組,當(dāng)然還有bashplotlib。
- importnumpy as np
- from bashplotlib.histogram import plot_hist
- arr = np.random.normal(size=1000, loc=0, scale=1)
plot_hist是bashplotlib的一個函數(shù),用于在直方圖中繪制一維數(shù)據(jù),就像plt.hist在Matplotlib中的功能一樣。然后,使用Numpy生成一個包含1,000個服從正態(tài)分布的數(shù)字組成的隨機數(shù)組。在此之后,可以很容易地繪制這些數(shù)據(jù):
- plot_hist(arr, bincount=50)
輸出就像這樣:
你也可以從文本文件中用散點圖來繪制數(shù)據(jù)。
2. PrettyTable
Bashplotlib在命令行環(huán)境中繪制數(shù)據(jù),而PrettyTable以一種好看的格式繪制輸出結(jié)果表。
同樣的,使用pip可以很容易地安裝這個庫:
- pipinstall prettytable
首先,導(dǎo)入這個庫:
- from prettytable import PrettyTable
然后,使用PrettyTable創(chuàng)建表格對象:
- table =PrettyTable()
一旦創(chuàng)建表格對象,就可以開始添加域和數(shù)據(jù)列了:
- 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
想為命令行應(yīng)用程序添加一些顏色嗎?Colorama可以很容易地輸出你喜歡的顏色。
圖源:unsplash
再一次使用pip安裝Colorama:
Colorama支持在“前景”(文本顏色)、“背景”(背景顏色)和“風(fēng)格”(額外的風(fēng)格的顏色)中支持渲染輸出顏色??梢詫?dǎo)入:
- fromcolorama import Fore, Back, Style
首先使用黃色顯示一些警告:

然后嘗試使用紅色背景顯示一些錯誤:
- print(Back.RED+ Fore.WHITE + "This is an error!")

紅色太艷了。使用“dim”風(fēng)格。
- print(Back.RESET+ Style.DIM + "Another error!")
此處設(shè)置“RESET”改變背景顏色為默認(rèn)。

“DIM”樣式使字體不可見。若想把所有東西都恢復(fù)正常時,只需將“Style”設(shè)置為“RESET_ALL”:
- print(Style.RESET_ALL)

4. FuzzyWuzzy
很多時候,你可能想為程序?qū)崿F(xiàn)一個“模糊”搜索功能,F(xiàn)uzzyWuzzy提供了一個開箱即用的輕量級解決方案。
和再去一樣,使用pip安裝:
- pip installfuzzywuzzy
導(dǎo)入庫:
- fromfuzzywuzzy import fuzz
做個簡單的測試:
- fuzz.ratio("Let’sdo a simple test", "Let us do a simple test")
如結(jié)果所示,“93”表示這兩個字符串有93%的相似性,這相當(dāng)高了。
當(dāng)有一個字符串列表,想要搜索所有的字符串,F(xiàn)uzzyWuzzy將幫助提取最相關(guān)的字符串及其相似性。
- fromfuzzywuzzy import processchoices = ["Data Visualisation", "DataVisualization", "Customised Behaviours", "CustomizedBehaviors"]process.extract("data visulisation", choices,limit=2)
- process.extract("custom behaviour", choices, limit=2)

在上面的示例中,參數(shù)limit告訴FuzzyWuzzy提取“前n個”結(jié)果。否則將獲得具有所有這些原始字符串及其相似性分?jǐn)?shù)的元組列表。
5. TQDM
圖源:unsplash
你通常會使用Python來開發(fā)命令行工具嗎?如果是的話一定要試試這個庫。當(dāng)CLI工具處理一些耗時的事情時,它將通過顯示一個進度條來指示完成了多少工作,幫助你了解情況。
老辦法,使用pip安裝:
- pipinstall tqdm
當(dāng)for循環(huán)使用range函數(shù)時,只是把它替換為tqdm中的trange即可。
- fromtqdm import trangefor i in trange(100):
- sleep(0.01)

一般來說,對列表做循環(huán)。使用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不僅適用于命令行環(huán)境,還適用于iPython / Jupyter Notebook。
圖源:https://github.com/tqdm/tqdm
在看到Bashplotlib庫之前,必須說筆者從來沒有在命令行環(huán)境中繪制數(shù)據(jù)的想法。人類發(fā)展思想和創(chuàng)造力的多樣性從來沒有停止過,這讓一切事物變得有趣起來。何不去試試呢?