Сообщить об ошибке.

Генерация HTML и JSON при помощи prettytable в Python

Генерация HTML и JSON из табличных данных

В разделе рассмотрено как просто генерировать форматы HTML и JSON из табличных данных при помощи модуля prettytable.

Отображение табличных данных в JSON формате.

Модуль prettytable позволяет печатать табличные данные в виде JSON. Как и в форме ASCII, можно получить строковое представление, для этого необходимо просто использовать метод PrettyTable.get_json_string().

from prettytable import PrettyTable
mytable = PrettyTable()
mytable.field_names = ["City name", "Area", "Population", "Annual Rainfall"]
mytable.add_rows(
    [
        ["Adelaide", 1295, 1158259, 600.5],
        ["Brisbane", 5905, 1857594, 1146.4],
        ["Darwin", 112, 120900, 1714.7],
        ["Hobart", 1357, 205556, 619.5],
    ]
)

# создание строки в JSON формате
>>> print(mytable.get_json_string())
# [
# ...
# ...
#     {
#         "Annual Rainfall": 600.5,
#         "Area": 1295,
#         "City name": "Adelaide",
#         "Population": 1158259
#     },
#     {
#         "Annual Rainfall": 1146.4,
#         "Area": 5905,
#         "City name": "Brisbane",
#         "Population": 1857594
#     },
# ...
# ...
]

Отображение таблицы в формате HTML.

Модуль prettytable также может печатать табличные данные в форме HTML. Строковое представление сгенерированной HTML разметки можно получить, просто использовав специальный метод PrettyTable.get_html_string(). Метод PrettyTable.get_html_string() поддерживает такие же аргументы управления выводом таблицы как и метод PrettyTable.get_string(): fields, start, end, sortby и reversesort.

Стилизация HTML-таблиц.

По умолчанию экземпляр PrettyTable() выводит "ванильный" HTML для полученной таблицы. Код HTML довольно прост:

>>> html = mytable.get_html_string()
>>> print(html)
# <table>
#     <thead>
#         <tr>
#             <th>City name</th>
#             <th>Area</th>
#             <th>Population</th>
#             <th>Annual Rainfall</th>
#         </tr>
#     </thead>
#     <tbody>
#         <tr>
#             <td>Adelaide</td>
#             <td>1295</td>
#             <td>1158259</td>
#             <td>600.5</td>
#         </tr>
# ...
#     </tbody>
# </table>

Модуль позволяет передать HTML разметке параметры стиля CSS. Это делается путем передачи ключевого аргумента format=True методу PrettyTable.get_html_string(). Обратите внимание, что-бы всегда печатать форматированный HTML, то необходимо передать True атрибуту экземпляра класса PrettyTable(): mytable.format = True и настройка будет действовать, пока ее не отключить.

Если необходимо изменить стиль таблицы только для одного вызова PrettyTable.get_html_string(), то можно передать параметры стиля для ключевого аргумента attributes для этого метода.

Аргумент attributes представляет собой словарь имя/значение атрибутов для HTML разметки таблицы, что позволяет указать имя, идентификатор и класс, которые можно использовать для настройки внешнего вида с помощью CSS. Например:

>>> html = mytable.get_html_string(attributes={"name":"table", "class":"green"})
>>> print(html)

Будет напечатано:

<table name="table" class="green">
    <thead>
        <tr>
            <th>City name</th>
            <th>Area</th>
            <th>Population</th>
            <th>Annual Rainfall</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Adelaide</td>
            <td>1295</td>
            <td>1158259</td>
            <td>600.5</td>
        </tr>
        <tr>
            <td>Brisbane</td>
            <td>5905</td>
            <td>1857594</td>
            <td>1146.4</td>
        </tr>
        <tr>
            <td>Darwin</td>
            <td>112</td>
            <td>120900</td>
            <td>1714.7</td>
        </tr>
        <tr>
            <td>Hobart</td>
            <td>1357</td>
            <td>205556</td>
            <td>619.5</td>
        </tr>
    </tbody>
</table>