tabulate 字符串样式的格式化表格

tabulate 字符串样式的格式化表格#

参考:tabulate

安装:

pip3 install tabulate 
from tabulate import tabulate

使用 list 生成表格#

table = [
    ['First Name', 'Last Name', 'Age'], 
    ['John', 'Smith', 39], 
    ['Mary', 'Jane', 25], 
    ['Jennifer', 'Doe', 28]
]
print(tabulate(table))
----------  ---------  ---
First Name  Last Name  Age
John        Smith      39
Mary        Jane       25
Jennifer    Doe        28
----------  ---------  ---

使用以下参数将列名单独显示出来:

print(tabulate(table, headers='firstrow'))
First Name    Last Name      Age
------------  -----------  -----
John          Smith           39
Mary          Jane            25
Jennifer      Doe             28

tabulate() 函数还包提供 tablefmt 参数,它允许进一步改进表格的外观,代码如下:

print(tabulate(table, headers='firstrow', tablefmt='grid'))
+--------------+-------------+-------+
| First Name   | Last Name   |   Age |
+==============+=============+=======+
| John         | Smith       |    39 |
+--------------+-------------+-------+
| Mary         | Jane        |    25 |
+--------------+-------------+-------+
| Jennifer     | Doe         |    28 |
+--------------+-------------+-------+
print(tabulate(table, headers='firstrow', tablefmt='fancy_grid'))
╒══════════════╤═════════════╤═══════╕
│ First Name   │ Last Name   │   Age │
╞══════════════╪═════════════╪═══════╡
│ John         │ Smith       │    39 │
├──────────────┼─────────────┼───────┤
│ Mary         │ Jane        │    25 │
├──────────────┼─────────────┼───────┤
│ Jennifer     │ Doe         │    28 │
╘══════════════╧═════════════╧═══════╛

使用 dict 生成表格#

在字典的情况下,键通常是列的标题,值将是这些列的元素取值。通常通过传递“keys”作为 headers 参数的参数来指定键是表格的标题:

info = {
    'First Name': ['John', 'Mary', 'Jennifer'], 
    'Last Name': ['Smith', 'Jane', 'Doe'], 
    'Age': [39, 25, 28]
}
print(tabulate(info, headers='keys'))
First Name    Last Name      Age
------------  -----------  -----
John          Smith           39
Mary          Jane            25
Jennifer      Doe             28

还可以使用 showindex 参数来向表格中添加索引列:

print(tabulate(info, headers='keys', tablefmt='fancy_grid', showindex=True))
╒════╤══════════════╤═════════════╤═══════╕
│    │ First Name   │ Last Name   │   Age │
╞════╪══════════════╪═════════════╪═══════╡
│  0 │ John         │ Smith       │    39 │
├────┼──────────────┼─────────────┼───────┤
│  1 │ Mary         │ Jane        │    25 │
├────┼──────────────┼─────────────┼───────┤
│  2 │ Jennifer     │ Doe         │    28 │
╘════╧══════════════╧═════════════╧═══════╛
print(tabulate(info, headers='keys', tablefmt='fancy_grid', showindex=range(1, 4)))
╒════╤══════════════╤═════════════╤═══════╕
│    │ First Name   │ Last Name   │   Age │
╞════╪══════════════╪═════════════╪═══════╡
│  1 │ John         │ Smith       │    39 │
├────┼──────────────┼─────────────┼───────┤
│  2 │ Mary         │ Jane        │    25 │
├────┼──────────────┼─────────────┼───────┤
│  3 │ Jennifer     │ Doe         │    28 │
╘════╧══════════════╧═════════════╧═══════╛