Простые, но полезные библиотеки для создания текстовых таблиц.

Введение

В последнее время я часто провожу время, читая по утрам о новых пакетах Python. Удивительно, но было так много простых, но полезных библиотек, что мне жаль, что я не знал о них раньше.

Я попытался обобщить их по разным темам, и сегодня в этой статье я хотел бы обсудить с вами одну из таких тем: «Как быстро создавать таблицы в Python?».

Теперь давайте посмотрим, что у нас здесь есть.

симпатичный стол

PrettyTable — это пакет Python, который позволяет создавать базовые таблицы ASCII. Различные шаблоны таблиц, такие как выравнивание текста или порядок данных, можно легко настроить с помощью простых кодов. Для более подробной информации давайте рассмотрим несколько примеров ниже.

Но сначала установим этот пакет:

!pip install prettytable 
from prettytable import PrettyTable as pt

Создание таблицы

Мы можем применить методы add_row или add_column для создания нужных таблиц. Вывод таблицы выглядит следующим образом:

  • Add_row(): строки постепенно добавляются в таблицу.
tb = pt()
#Add headers
tb.field_names = ["ID","Name", "Major","Grade"]
#Add rows
tb.add_row([1,"Chi", "Statistics",3.5])
tb.add_row([2,"John","Business Administration"],3.6)
tb.add_row([3,"Lily","Satistics"],3.7)
print(tb)
  • Add_column(): столбцы постепенно добавляются в таблицу.
tb1 = pt()
#Add headers
column_names = ["ID","Name", "Major"]
#Add columns
tb1.add_column(column_names[0],[1,2,3])
tb1.add_column(column_names[1],["Chi","John","Lily"])
tb1.add_column(column_names[2],["Statistics","Business Administration","Statistics"])
tb1.add_column(column_names[3],[3.5,3.6,3.7])
print(tb1)

Именование таблицы

Мы можем назвать таблицу, добавив к ней заголовок с помощью get_string(title = “table name")

Корректировка данных таблицы

С помощью атрибута align мы можем управлять выравниванием данных вправо, по центру или влево. Например, я хочу изменить значения данных в столбце Major слева, установить align на l Аналогичным образом, если вы хотите, чтобы данные были справа, установите для них значения r и c для центрирования.

tb.align["Major"] = "l"

Удаление строк

Удаление ненужных строк из таблиц не требует усилий. Все, что вам нужно сделать, это применить del_row Поскольку мне больше не нужна последняя строка, вот как я удаляю ее из своей таблицы:

tb.del_row(2)

Сортировка данных

sortby и reversesort помогают расположить значения данных в определенном порядке. В то время как sortby указывает, какой столбец сортируется, reversesort указывает порядок сортировки.

Например, сортировка учащихся от самой высокой оценки к самой низкой.

tb.sortby = "Grade"
tb.reversesort = True

Генерация вывода HTML

Благодаря поддержке get_html_string мы можем легко сгенерировать вывод HTML в консоли.

print(tb.get_html_string())

Табулировать

Tabulate — еще одна библиотека, которую я хотел бы порекомендовать. По сути, он очень похож на PrettyTable, но я думаю, что он более гибок в настройке сетки по сравнению с PrettyTable. Мы рассмотрим несколько примеров, чтобы увидеть, как эти элементы настраиваются с помощью атрибутов Tabulate.

Мы можем установить этот пакет:

!pip install tabulate

Создание таблицы без линий сетки

df =   [["Chi", "Vietnam","Graduate"], 
        ["John","USA","Graduate"], 
        ["Lily","Belgium","Graduate"]]
  
#define header names
col_names = ["Name", "Country", "Program"]
  
#display table
print(tabulate(df, headers=col_names))

Создание таблицы с линии сетки

print(tabulate(df, headers=col_names, tablefmt="fancy_grid"))

Помимо fancy_grid, есть еще несколько форматов таблиц, которые вы можете попробовать, например, jira, textile, html.

Добавление индекса в таблицу

Добавление индекса:отображение индекса путем применения атрибута showindex = "always”

Текстовая таблица

Лично я считаю, что это самая настраиваемая библиотека среди трех библиотек. Он может управлять шириной столбца, настраивать выравнивание данных как по горизонтали, так и по вертикали, а также гибко изменять линии сетки таблицы.

Создание таблицы

Например, в приведенном ниже коде показано, как я создаю таблицу с помощью библиотеки Texttable. Подобно PrettyTable, to может вставить строку в таблицу, создав список с содержимое и применить add_row()function объекта TextTable, чтобы добавить его в таблицу.

#Installing
pip instal texttable
import texttable as tt
tb = tt.TextTable()
#Adding header and rows to the table
tb.header(["ID","Name", "Major","Grade"])
tb.add_row([1,"Chi", "Statistics","3.5"])
tb.add_row([2,"John","Business Administration","3.6"])
tb.add_row([3,"Lily","Satistics","3.7"])
print(tb.draw())

Изменение ширины столбцов

Ширину столбцов в таблице можно настроить с помощью set_cols_width Общее количество в списке соответствует количеству столбцов в таблице.

tb.set_cols_width([11,12,15,14])

Настройка выравнивания данных

Методы set_cols_align и set_cols_valign можно использовать для выравнивания данных по горизонтали и вертикали внутри ячеек таблицы.

С помощью set_cols_align() вход может быть установлен как set_cols_align(['c','l','r']), что соответствует выравниванию по центру, левому или правому краю.

С помощью set_cols_valign() мы можем назначить tдля выравнивания по верхнему краю, mдля выравнивания по среднему краю и bдля выравнивания по нижнему краю.

Обратите внимание, что список, помещаемый в функции выравнивания, должен иметь ту же длину, что и количество значений в строке.

Контрольные линии

Для изменения отрисовки линий между строками и столбцами, а также между заголовком и первой строкой используется функция set_deco. В set_deco есть четыре управляющих элемента:

  • texttable.BORDER граница таблицы
  • texttable.HEADER строка под заголовком
  • texttable.HLINES линии между строками
  • texttable.VLINES линии между столбцами

Объединив эти четыре элемента в set_deco(), вы решаете, какая функция доступна для таблицы. Например, я решил оставить строки ниже заголовка и между строками в приведенном ниже коде. В то же время, то, что я не упоминаю texttable.BORDER и texttable.VLINES, означает, что я отключаю линии между столбцами и вокруг таблицы.

tb.set_deco(tb.HEADER | tb.HLINES)

Заключение

Выше приведены некоторые мои предложения по созданию текстовой таблицы. Я надеюсь, что они могут помочь вам в чем-то.

Всем хорошего дня.

Ссылка