Как один из наиболее популярных языков программирования, Python содержит огромное количество прекрасных библиотек, облегчающих разработку, таких как Pandas, Numpy, Matplotlib, SciPy и так далее.

Однако в этой статье я познакомлю вас с библиотеками скорее любопытными, чем полезными. Я считаю, эти библиотеки демонстрируют ещё один аспект процветания Python сообщества.

1. Bashplotlib

Когда я впервые увидел эту библиотеку, я подумал, зачем вообще кому-то она может понадобиться? Bashplotlib — это библиотека Python, позволяющая отображать данные в среде стандартного вывода командной строки.

Вскоре я обнаружил, что она может быть полезной, если у вас под рукой нет GUI. Конечно, подобный сценарий не особо распространён, но это не помешало моему любопытству и интуитивному ощущению понять, что это весьма интересная библиотека Python.

Bashplotlib легко установить с помощью pip:

pip install bashplotlib

Рассмотрим несколько примеров. В коде ниже я импортировал numpy, чтобы сформировать несколько случайных массивов, и, разумеется, bashplotlib:

import numpy 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:

pip install 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. FuzzyWuzzy

Как мне кажется, эта библиотека не только интересная, но и очень полезная. Множество раз вам могло прийти в голову реализовать “размытую” функцию поиска для вашей программы. FuzzyWuzzy предоставляет готовое и лёгкое решение.

Устанавливаем с помощью pip:

pip install fuzzywuzzy

Импортируем библиотеку:

from fuzzywuzzy import fuzz

Пишем простой текст:

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

Как видим, результат “93” означает, что эти две строки совпадают на 93%, что довольно высоко.

Если у вас есть список строк, а термин необходимо искать во всех строках, FuzzyWuzzy поможет выделить наиболее похожие слова:

from fuzzywuzzy import process

choices = ["Data Visualisation", "Data Visualization", "Customised Behaviours", "Customized Behaviors"]

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

В примере выше параметр limit сообщает FuzzyWuzzy, что нужно выделить “top n” результатов. В противном случае вы получите список кортежей, содержащий все исходные строки и их показатели сходства. 

4. TQDM

Часто используете Python для разработки инструментов для командной строки? Эта интересная библиотека отображает индикатор выполнения, что полезно, если инструмент CLI обрабатывает что-то, отнимающее много времени.

Устанавливаем с помощью pip:

pip install tqdm

Если у вас есть цикл for, использующий функцию range, просто замените его на trange из tqdm.

from tqdm import trangefor i in trange(100):
    sleep(0.01)

В более общем случае можно легко зациклить список с помощью tqdm.

from tqdm import tqdm
for e in tqdm([1,2,3,4,5,6,7,8,9]):
    sleep(0.5)  # Предположим, мы делаем что-то с элементами

tqdm работает не только со средой командной строки, но также с iPython/блокнотом Jupyter.

5. Colorama

Хотите добавить цвета в приложения командной строки? С Colorama проще простого сделать вывод в любом выбранном вами цвете.

Устанавливаем Colorama с помощью pip:

pip install colorama

Colorama поддерживает отображение цвета на переднем плане (цвет текста), заднем плане (цвет фона) и в стиле (дополнительные стили цвета). Импортируем:

from colorama import Fore, Back, Style

Сначала давайте покажем некоторые предупреждения жёлтым цветом:

print(Fore.YELLOW)
print("This is a warning!")

Теперь попробуем указать на некоторые ошибки, используя красный цвет фона:

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

Этот красный слишком яркий, давайте используем стиль “dim”:

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

Устанавливаем “RESET” для возврата цвет фона по умолчанию:

Стиль “DIM” делает шрифт невидимым. Если нужно вернуть всё обратно, просто задайте стилю значение “RESET_ALL”:

print(Style.RESET_ALL)

Заключение

Спасибо разработчикам открытого исходного кода, благодаря которым процветает сообщество Python.

Мне никогда не приходила в голову идея графического вывода данных в среде командной строки до того, как я увидел библиотеку Bashplotlib. И независимо от того, пригодится ли она вам, по-моему, разнообразие идей разработки и креативность разработчиков восхитительны. 

Жизнь коротка, используйте Python!

Читайте также:


Перевод статьи Christopher Tao: 5 Interesting Python Libraries

Предыдущая статьяПрекращайте пользоваться Git CLI
Следующая статьяКак сгенерировать настоящие случайные числа в Solidity с блокчейном