Как один из наиболее популярных языков программирования, Python содержит огромное количество прекрасных библиотек, облегчающих разработку, таких как Pandas, Numpy, Matplotlib, SciPy и так далее.
Однако в этой статье я познакомлю вас с библиотеками скорее любопытными, чем полезными. Я считаю, эти библиотеки демонстрируют ещё один аспект процветания Python сообщества.
Когда я впервые увидел эту библиотеку, я подумал, зачем вообще кому-то она может понадобиться? Bashplotlib — это библиотека Python, позволяющая отображать данные в среде стандартного вывода командной строки.
Вскоре я обнаружил, что она может быть полезной, если у вас под рукой нет GUI. Конечно, подобный сценарий не особо распространён, но это не помешало моему любопытству и интуитивному ощущению понять, что это весьма интересная библиотека Python.
Bashplotlib легко установить с помощью pip
:
Рассмотрим несколько примеров. В коде ниже я импортировал 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 нормально распределённых чисел. Теперь мы легко можем отобразить эти данные следующим образом:
Вывод будет таким:
Интересно, неправда ли? ????
Кроме того, можно отобразить данные из текстового файла на диаграмме разброса данных.
Bashplotlib предназначена для отображения данных в среде командной строки, а PrettyTable предназначена для создания таблицы выходных данных в красивом формате.
Устанавливаем эту библиотеку так же с помощью pip
:
Сначала импортируем библиотеку:
from prettytable import PrettyTableЗатем используем 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-строку таблицы:
Как мне кажется, эта библиотека не только интересная, но и очень полезная. Множество раз вам могло прийти в голову реализовать “размытую” функцию поиска для вашей программы. FuzzyWuzzy предоставляет готовое и лёгкое решение.
Устанавливаем с помощью pip
:
Импортируем библиотеку:
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” результатов. В противном случае вы получите список кортежей, содержащий все исходные строки и их показатели сходства.
Часто используете Python для разработки инструментов для командной строки? Эта интересная библиотека отображает индикатор выполнения, что полезно, если инструмент CLI обрабатывает что-то, отнимающее много времени.
Устанавливаем с помощью pip
:
Если у вас есть цикл 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.
https://github.com/tqdm/tqdmХотите добавить цвета в приложения командной строки? С Colorama проще простого сделать вывод в любом выбранном вами цвете.
Устанавливаем Colorama с помощью pip
:
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
Комментарии