- Модуль Prettytable в Python – вывод таблиц ASCII
- Что такое Pretty Table в Python?
- Создание таблицы с помощью Pretty Table
- Удаление строк в PrettyTable
- Получение определенных строк и столбцов
- Изменение формата выравнивания столбца
- Изменение внешнего вида таблицы
- Заключение
- Как в Python сделать вывод таблицей?
Модуль Prettytable в Python – вывод таблиц ASCII
В этом руководстве мы научимся создавать реляционную таблицу с помощью модуля Python Prettytable. Мы будем создавать таблицы без использования внешних библиотек.
Что такое Pretty Table в Python?
Prettytable в Python – это визуальное отображение данных в табличной форме в формате таблиц ASCII, которые просты в использовании. Библиотека prettytable состоит из класса PrettyTable, который используется для создания реляционных таблиц. Чтобы работать с этой библиотекой, нам нужно установить ее с помощью следующей команды.
Создание таблицы с помощью Pretty Table
Давайте на примере создадим построчную таблицу с помощью модуля pretty table.
Пример 1: построчный способ.
from prettytable import PrettyTable # Creating a new table newTable = PrettyTable(["Student Name", "Class", "Subject", "Makrs"]) # Add rows newTable.add_row(["Camron", "X", "English", "91"]) newTable.add_row(["Haris", "X", "Math", "63"]) newTable.add_row(["Jenny", "X", "Science", "90"]) newTable.add_row(["Bernald", "X", "Art", "92"]) newTable.add_row(["Jackson", "X", "Science", "98"]) newTable.add_row(["Samual", "X", "English", "88"]) newTable.add_row(["Stark", "X", "English", "95"]) print(newTable)
+--------------+-------+---------+-------+ | Student Name | Class | Subject | Makrs | +--------------+-------+---------+-------+ | Camron | X | English | 91 | | Haris | X | Math | 63 | | Jenny | X | Science | 90 | | Bernald | X | Art | 92 | | Jackson | X | Science | 98 | | Samual | X | English | 88 | | Stark | X | English | 95 | +--------------+-------+---------+-------+
Пример – 2: столбцовый способ.
from prettytable import PrettyTable columns = ["Student Name", "Class", "Subject", "Marks"] newTable = PrettyTable() # Add Columns newTable.add_column(columns[0], ["Jacob", "Peter", "Grenger", "Stark", "Falcon", "Matthew", "Jackson"]) newTable.add_column(columns[1], ["X", "X", "X", "X", "X", "X", "X"]) newTable.add_column(columns[2], ["English", "Art", "Science", "Math", "Science", "English", "English"]) newTable.add_column(columns[3], ["91", "63", "90", "92", "98", "83", "95"]) print(newTable)
+--------------+-------+---------+-------------------+ | Student Name | Class | Subject | Marks | +--------------+-------+---------+-------------------+ | Jacob | X | English | 91 | | Peter | X | Art | 63 | | Grenger | X | Science | 90 | | Stark | X | Math | 92 | | Falcon | X | Science | 98 | | Matthew | X | English | 83 | | Jackson | X | English | 95 | +--------------+-------+---------+------------------+
Мы использовали метод add_column() модуля pretty table.
Пример 3: добавить строки за один раз.
from prettytable import PrettyTable # Creating a new table newTable = PrettyTable(["Student Name", "Class", "Subject", "Makrs"]) # # Add rows newTable.add_rows( [ ["Camron", "X", "English", "91"], ["Haris", "X", "Math", "63"], ["Jenny", "X", "Science", "90"], ["Bernald", "X", "Art", "92"], ["Jackson", "X", "Science", "98"], ["Samual", "X", "English", "88"], ["Stark", "X", "English", "95"], ] ) print(newTable)
+--------------+-------+---------+-------+ | Camron | X | English | 91 | | Haris | X | Math | 63 | | Jenny | X | Science | 90 | | Bernald | X | Art | 92 | | Jackson | X | Science | 98 | | Samual | X | English | 88 | | Stark | X | English | 95 | +--------------+-------+---------+-------+
Удаление строк в PrettyTable
Этот модуль предоставляет метод del_row(), который позволяет нам удалять строки. Для удаления строки требуется знать значение индекса, который нужно удалить. Индексация начинается с нуля. Давайте разберемся в следующем коде.
from prettytable import PrettyTable # Creating a new table newTable = PrettyTable(["Student Name", "Class", "Subject", "Makrs"]) # # Add rows newTable.add_row(["Camron", "X", "English", "91"]) newTable.add_row(["Haris", "X", "Math", "63"]) newTable.add_row(["Jenny", "X", "Science", "90"]) newTable.add_row(["Bernald", "X", "Art", "92"]) newTable.add_row(["Jackson", "X", "Science", "98"]) newTable.add_row(["Samual", "X", "English", "88"]) newTable.add_row(["Stark", "X", "English", "95"]) newTable.del_row(1) newTable.del_row(2) newTable.del_row(3) print(newTable)
+--------------+-------+---------+-------+ | Student Name | Class | Subject | Makrs | +--------------+-------+---------+-------+ | Camron | X | English | 91 | | Jenny | X | Science | 90 | | Jackson | X | Science | 98 | | Stark | X | English | 95 | +--------------+-------+---------+-------+
Мы удалили определенные строки из таблицы. Чтобы очистить всю таблицу, мы используем следующий метод:
from prettytable import PrettyTable # Creating a new table newTable = PrettyTable(["Student Name", "Class", "Subject", "Makrs"]) # # Add rows newTable.add_row(["Camron", "X", "English", "91"]) newTable.add_row(["Haris", "X", "Math", "63"]) newTable.add_row(["Jenny", "X", "Science", "90"]) newTable.add_row(["Bernald", "X", "Art", "92"]) newTable.add_row(["Jackson", "X", "Science", "98"]) newTable.add_row(["Samual", "X", "English", "88"]) newTable.add_row(["Stark", "X", "English", "95"]) newTable.clear_rows() print(newTable)
+--------------+-------+---------+------------------+ | Student Name | Class | Subject | Makrs | +--------------+-------+---------+--------------------+ +--------------+-------+---------+--------------------+
Как видно из приведенного выше кода, все строки были удалены. Мы можем видеть только названия столбцов.
Получение определенных строк и столбцов
Основная цель prettytable – получить таблицы в формате ASCII. Мы можем ограничить вывод таблицы, используя следующий метод.
get_string(fields=["Column 1", "Column2", . ColumnN]
Давайте разберемся в следующем примере.
from prettytable import PrettyTable # Creating a new table newTable = PrettyTable(["Student Name", "Class", "Subject", "Makrs"]) # # Add rows newTable.add_rows( [ ["Camron", "X", "English", "91"], ["Haris", "X", "Math", "63"], ["Jenny", "X", "Science", "90"], ["Bernald", "X", "Art", "92"], ["Jackson", "X", "Science", "98"], ["Samual", "X", "English", "88"], ["Stark", "X", "English", "95"], ] ) print(newTable.get_string(fields=["Student Name", "Class"]))
+--------------+--------------+ | Student Name | Class | +--------------+--------------+ | Camron | X | | Haris | X | | Jenny | X | | Bernald | X | | Jackson | X | | Samual | X | | Stark | X | +--------------+---------------+
Аргумент поля принимает список имен для печати.
Мы также можем использовать следующий метод для проверки результата.
print(newTable.get_string(start=1, end=4)
+--------------+-------+---------+-------------------+ | Student Name | Class | Subject | Makrs | +--------------+-------+---------+-------------------+ | Camron | X | English | 91 | | Haris | X | Math | 63 | | Jenny | X | Science | 90 | +--------------+-------+---------+------------------+
Изменение формата выравнивания столбца
Мы можем заметить, что все столбцы в таблице выровнены по центру. Мы можем изменить его в соответствии с требованиями, назначив один символ для выравнивания атрибута. Есть три строки выравнивания – «l» (для левого), «r» (для правого) и «c» (для центра), соответственно.
Посмотрим на следующий пример:
newTable.align = 'r' print(newTable)
+--------------+-------+---------+-------------------+ | Student Name | Class | Subject | Makrs | +--------------+-------+---------+------------------+ | Camron | X | English | 91 | | Haris | X | Math | 63 | | Jenny | X | Science | 90 | | Bernald | X | Art | 92 | | Jackson | X | Science | 98 | | Samual | X | English | 88 | | Stark | X | English | 95 | +--------------+-------+---------+------------------+
Изменение внешнего вида таблицы
Таблица по умолчанию выглядит как оболочка базы данных SQL. Однако мы можем изменить внешний вид таблицы на другой формат. Модуль prettytable предоставляет метод set_style(), преобразующий таблицу в MSWord.
Пример. Добавим следующий код в программу создания таблицы.
from prettytable import MSWORD_FRIENDLY newTable.set_style(MSWORD_FRIENDLY) print(newTable)
| Student Name | Class | Subject | Makrs | | Camron | X | English | 91 | | Haris | X | Math | 63 | | Jenny | X | Science | 90 | | Bernald | X | Art | 92 | | Jackson | X | Science | 98 | | Samual | X | English | 88 | | Stark | X | English | 95 |
Мы ясно видим разницу между таблицей по умолчанию и таблицей, дружественной с MSWord.
Заключение
Мы обсудили некоторые важные операции с табличными данными, используя модуль prettytable. Это очень эффективный модуль для работы с таблицами с использованием скрипта Python.
Как в Python сделать вывод таблицей?
javedimka: h2 = wifi.find_all(‘h2’) посмотрите пожалуйста внимательно html код или вы только обратили внимаение на не правильно сформулированную суть вопроса?
Дмитрий: Хтмл не смотрел, зачем? Что-то было в твоем вопросе и это что-то заставило мня написать про find_all. В любом случае не очень понятно, что требуется. Если надо просто вывести содержимое этих тегов то гугли про парсинг вложенных тегов, смотри методы в документации бс. Ну а если не получится найти и кто-то другой не ответит, то вечером, как приду домой — отвечу я, с телефона не очень.
javedimka: в краце есть кусок html в итоге надо вывести как я понимаю словарь th[0]:td[0] и так далее но чето цыкл против меня пока что тк я неопытен и только учусь питону
Самый простой способ с помощью Python вывести таблицу с данными в терминале или cmd это установить какой-нибудь модуль для ascii таблиц, например: PrettyTable
$ pip install PrettyTable
from prettytable import PrettyTable # Импортируем установленный модуль. # Определяем твою шапку и данные. th = [. ] td = [. ] columns = len(th) # Подсчитаем кол-во столбцов на будущее. table = PrettyTable(th) # Определяем таблицу. # Cкопируем список td, на случай если он будет использоваться в коде дальше. td_data = td[:] # Входим в цикл который заполняет нашу таблицу. # Цикл будет выполняться до тех пор пока у нас не кончатся данные # для заполнения строк таблицы (список td_data). while td_data: # Используя срез добавляем первые пять элементов в строку. # (columns = 5). table.add_row(td_data[:columns]) # Используя срез переопределяем td_data так, чтобы он # больше не содержал первых 5 элементов. td_data = td_data[columns:] print(table) # Печатаем таблицу
+-------------------+---------------+------+-------------+------------+ | MAC Address | IP Address | Mode | Rate (Mbps) | Signal (%) | +-------------------+---------------+------+-------------+------------+ | 11:11:11:11:11:11 | 192.168.0.103 | 11n | 65 | 100 | | 11:11:11:11:11:11 | 192.168.0.103 | 11n | 65 | 100 | | 11:11:11:11:11:11 | 192.168.0.103 | 11n | 65 | 100 | | 11:11:11:11:11:11 | 192.168.0.103 | 11n | 65 | 100 | | 11:11:11:11:11:11 | 192.168.0.103 | 11n | 65 | 100 | +-------------------+---------------+------+-------------+------------+
А теперь представь сколько бесполезных разговоров могло быть опущено и времени сэкономлено, если бы у тебя с первого раза получилось нормально вопрос сформулировать? Вот то-то и оно.