В разделе рассмотрено как просто генерировать форматы HTML и JSON из табличных данных при помощи модуля prettytable
.
Модуль 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 # }, # ... # ... ]
Модуль prettytable
также может печатать табличные данные в форме HTML. Строковое представление сгенерированной HTML разметки можно получить, просто использовав специальный метод PrettyTable.get_html_string()
. Метод PrettyTable.get_html_string()
поддерживает такие же аргументы управления выводом таблицы как и метод PrettyTable.get_string()
: fields
, start
, end
, sortby
и reversesort
.
По умолчанию экземпляр 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>