python

超轻量级php框架startmvc

Python实用库 PrettyTable 学习笔记

更新时间:2020-07-21 13:42:01 作者:startmvc
本文实例讲述了Python实用库PrettyTable。分享给大家供大家参考,具体如下:PrettyTable安装使

本文实例讲述了Python实用库 PrettyTable。分享给大家供大家参考,具体如下:

PrettyTable安装

使用pip即可十分方便的安装PrettyTable,如下:


pip install PrettyTable

PrettyTable使用示例

github上有PrettyTable的使用说明,链接如下:https://github.com/dprince/python-prettytable

以下是具体的使用示例:


import prettytable as pt

按行添加数据


tb = pt.PrettyTable()
tb.field_names = ["City name", "Area", "Population", "Annual Rainfall"]
tb.add_row(["Adelaide",1295, 1158259, 600.5])
tb.add_row(["Brisbane",5905, 1857594, 1146.4])
tb.add_row(["Darwin", 112, 120900, 1714.7])
tb.add_row(["Hobart", 1357, 205556,619.5])
print(tb)

+-----------+------+------------+-----------------+ | City name | Area | Population | Annual Rainfall | +-----------+------+------------+-----------------+ |  Adelaide | 1295 |  1158259   |      600.5      | |  Brisbane | 5905 |  1857594   |      1146.4     | |   Darwin  | 112  |   120900   |      1714.7     | |   Hobart  | 1357 |   205556   |      619.5      | +-----------+------+------------+-----------------+

按列添加数据


tb.add_column('index',[1,2,3,4])
print(tb)

+-----------+------+------------+-----------------+-------+ | City name | Area | Population | Annual Rainfall | index | +-----------+------+------------+-----------------+-------+ |  Adelaide | 1295 |  1158259   |      600.5      |   1   | |  Brisbane | 5905 |  1857594   |      1146.4     |   2   | |   Darwin  | 112  |   120900   |      1714.7     |   3   | |   Hobart  | 1357 |   205556   |      619.5      |   4   | +-----------+------+------------+-----------------+-------+

使用不同的输出风格


tb.set_style(pt.MSWORD_FRIENDLY)
print('--- style:MSWORD_FRIENDLY -----')
print(tb)
tb.set_style(pt.PLAIN_COLUMNS)
print('--- style:PLAIN_COLUMNS -----')
print(tb)

随机风格,每次不同


tb.set_style(pt.RANDOM)
print('--- style:MSWORD_FRIENDLY -----')
print(tb)
tb.set_style(pt.DEFAULT)
print('--- style:DEFAULT -----')
print(tb)

--- style:MSWORD_FRIENDLY ----- | City name | Area | Population | Annual Rainfall | |  Adelaide | 1295 |  1158259   |      600.5      | |  Brisbane | 5905 |  1857594   |      1146.4     | |   Darwin  | 112  |   120900   |      1714.7     | |   Hobart  | 1357 |   205556   |      619.5      | --- style:PLAIN_COLUMNS ----- City name        Area        Population        Annual Rainfall         Adelaide        1295         1158259               600.5              Brisbane        5905         1857594               1146.4              Darwin         112           120900               1714.7              Hobart         1357          205556               619.5             --- style:MSWORD_FRIENDLY ----- @    Adelaide     1295     1158259     600.5 @ @    Brisbane     5905     1857594     1146.4@ @     Darwin      112       120900     1714.7@ @     Hobart      1357      205556     619.5 @ --- style:DEFAULT ----- +-----------+------+------------+-----------------+ | City name | Area | Population | Annual Rainfall | +-----------+------+------------+-----------------+ |  Adelaide | 1295 |  1158259   |      600.5      | |  Brisbane | 5905 |  1857594   |      1146.4     | |   Darwin  | 112  |   120900   |      1714.7     | |   Hobart  | 1357 |   205556   |      619.5      | +-----------+------+------------+-----------------+

不打印,获取表格字符串


s = tb.get_string()
print(s)

可以只获取指定列或行


s = tb.get_string(fields=["City name", "Population"],start=1,end=4)
print(s)

+-----------+------+------------+-----------------+ | City name | Area | Population | Annual Rainfall | +-----------+------+------------+-----------------+ |  Adelaide | 1295 |  1158259   |      600.5      | |  Brisbane | 5905 |  1857594   |      1146.4     | |   Darwin  | 112  |   120900   |      1714.7     | |   Hobart  | 1357 |   205556   |      619.5      | +-----------+------+------------+-----------------+ +-----------+------------+ | City name | Population | +-----------+------------+ |  Brisbane |  1857594   | |   Darwin  |   120900   | |   Hobart  |   205556   | +-----------+------------+

自定义表格输出样式

设定左对齐


tb.align = 'l'

设定数字输出格式


tb.float_format = "2.2"

设定边框连接符为'*”


tb.junction_char = "*"

设定排序方式


tb.sortby = "City name"

设定左侧不填充空白字符


tb.left_padding_width = 0
print(tb)

*----------*-----*-----------*----------------* |City name |Area |Population |Annual Rainfall | *----------*-----*-----------*----------------* |Adelaide  |1295 |1158259    |600.50          | |Brisbane  |5905 |1857594    |1146.40         | |Darwin    |112  |120900     |1714.70         | |Hobart    |1357 |205556     |619.50          | *----------*-----*-----------*----------------*

不显示边框


tb.border = 0
print(tb)

修改边框分隔符


tb.set_style(pt.DEFAULT)
tb.horizontal_char = '+'
print(tb)

City name Area Population Annual Rainfall Adelaide  1295 1158259    600.50          Brisbane  5905 1857594    1146.40         Darwin    112  120900     1714.70         Hobart    1357 205556     619.50          +++++++++++++++++++++++++++++++++++++++++++++++++++ | City name | Area | Population | Annual Rainfall | +++++++++++++++++++++++++++++++++++++++++++++++++++ | Adelaide  | 1295 | 1158259    | 600.50          | | Brisbane  | 5905 | 1857594    | 1146.40         | | Darwin    | 112  | 120900     | 1714.70         | | Hobart    | 1357 | 205556     | 619.50          | +++++++++++++++++++++++++++++++++++++++++++++++++++

prettytable也支持输出HTML代码


s = tb.get_html_string()
print(s)

City name Area Population Annual Rainfall
Adelaide 1295 1158259 600.50
Brisbane 5905 1857594 1146.40
Darwin 112 120900 1714.70
Hobart 1357 205556 619.50

使用copy方法复制对象


tb.set_style(pt.DEFAULT)
tb.horizontal_char = '.'
tb2 = tb.copy()
tb.align = 'l'
tb2.align = 'r'
print(tb)
print(tb2)

直接赋值,得到的是索引


tb.horizontal_char = '-'
tb.aliign = 'l'
tb3 = tb
tb3.align = 'r'
print(tb)
print(tb3)

+...........+......+............+.................+ | City name | Area | Population | Annual Rainfall | +...........+......+............+.................+ | Adelaide  | 1295 | 1158259    | 600.50          | | Brisbane  | 5905 | 1857594    | 1146.40         | | Darwin    | 112  | 120900     | 1714.70         | | Hobart    | 1357 | 205556     | 619.50          | +...........+......+............+.................+ +...........+......+............+.................+ | City name | Area | Population | Annual Rainfall | +...........+......+............+.................+ |  Adelaide | 1295 |    1158259 |          600.50 | |  Brisbane | 5905 |    1857594 |         1146.40 | |    Darwin |  112 |     120900 |         1714.70 | |    Hobart | 1357 |     205556 |          619.50 | +...........+......+............+.................+ +-----------+------+------------+-----------------+ | City name | Area | Population | Annual Rainfall | +-----------+------+------------+-----------------+ |  Adelaide | 1295 |    1158259 |          600.50 | |  Brisbane | 5905 |    1857594 |         1146.40 | |    Darwin |  112 |     120900 |         1714.70 | |    Hobart | 1357 |     205556 |          619.50 | +-----------+------+------------+-----------------+ +-----------+------+------------+-----------------+ | City name | Area | Population | Annual Rainfall | +-----------+------+------------+-----------------+ |  Adelaide | 1295 |    1158259 |          600.50 | |  Brisbane | 5905 |    1857594 |         1146.40 | |    Darwin |  112 |     120900 |         1714.70 | |    Hobart | 1357 |     205556 |          619.50 | +-----------+------+------------+-----------------+ ---------------------

Python 实用库 PrettyTable