python 包之 PrettyTable 优美表格教程

一、安装

pip install PrettyTable

 

二、按行设置数据

import prettytable as pt

# 按行添加数据
tb = pt.PrettyTable()
tb.field_names = ['name', 'age', 'height', 'weight']
tb.add_row(['autofelix', 25, 174, 65])
tb.add_row(['大神', 23, 164, 55])
tb.add_row(['飞兔小哥', 27, 184, 69.5])

print(tb)

# +-----------+-----+--------+--------+
# |    name   | age | height | weight |
# +-----------+-----+--------+--------+
# | autofelix |  25 |  174   |   65   |
# |    大神    |  23 |  164   |   55   |
# |  飞兔小哥  |  27 |  184    |  69.5 |
# +-----------+-----+--------+--------+

 

三、按列添加

import prettytable as pt

# 按行添加数据
tb = pt.PrettyTable()
tb.field_names = ['name', 'age', 'height', 'weight']
tb.add_row(['autofelix', 25, 174, 65])
tb.add_row(['大神', 23, 164, 55])
tb.add_row(['飞兔小哥', 27, 184, 69.5])
# 按列添加数据
tb.add_column('sex',['男', '女', '男'])

print(tb)

# +-----------+-----+--------+--------+-----+
# |    name   | age | height | weight | sex |
# +-----------+-----+--------+--------+-----+
# | autofelix |  25 |  174   |   65   |  男 |
# |    大神    |  23 |  164   |   55   |  女 |
# |  飞兔小哥  |  27 |  184   |  69.5  |  男 |
# +-----------+-----+--------+--------+-----+

 

四、输出风格

  • MSWORD_FRIENDLY:MSWORD_FRIENDLY输出风格

  • PLAIN_COLUMNS:PLAIN_COLUMNS输出风格

  • RANDOM:每次随机输出风格

  • DEFAULT:默认输出风格

import prettytable as pt

# 按行添加数据
tb = pt.PrettyTable()
tb.field_names = ['name', 'age', 'height', 'weight']
tb.add_row(['autofelix', 25, 174, 65])
tb.add_row(['大神', 23, 164, 55])
tb.add_row(['飞兔小哥', 27, 184, 69.5])
# 风格
tb.set_style(pt.MSWORD_FRIENDLY)

print(tb)

# |    name   | age | height | weight |
# | autofelix |  25 |  174   |   65   |
# |    大神   |  23 |  164   |   55   |
# |  飞兔小哥  |  27 |  184   |  69.5  |

 

五、获取字符串

import prettytable as pt

# 按行添加数据
tb = pt.PrettyTable()
tb.field_names = ['name', 'age', 'height', 'weight']
tb.add_row(['autofelix', 25, 174, 65])
tb.add_row(['大神', 23, 164, 55])
tb.add_row(['飞兔小哥', 27, 184, 69.5])

# 不打印,获取表格字符串
s1 = tb.get_string()
print(s1)

# +-----------+-----+--------+--------+
# |    name   | age | height | weight |
# +-----------+-----+--------+--------+
# | autofelix |  25 |  174   |   65   |
# |    大神    |  23 |  164   |   55   |
# |  飞兔小哥  |  27 |  184    |  69.5 |
# +-----------+-----+--------+--------+

# 或者可以只获取指定列或行
s2 = tb.get_string(fields=['name', 'age'], start=1, end=4)
print(s2)

# +----------+-----+
# |   name   | age |
# +----------+-----+
# |   大神   |  23 |
# | 飞兔小哥  |  27 |
# +----------+-----+

 

六、表格样式设置

import prettytable as pt

# 按行添加数据
tb = pt.PrettyTable()
tb.field_names = ['name', 'age', 'height', 'weight']
tb.add_row(['autofelix', 25, 174, 65])
tb.add_row(['大神', 23, 164, 55])
tb.add_row(['飞兔小哥', 27, 184, 69.5])

# 设定左对齐
tb.align = 'l'
# 设定数字输出格式
tb.float_format = '2.2'
# 设定边框连接符为'*"
tb.junction_char = '*'
# 设定排序方式
tb.sortby = 'age'
# 设定左侧不填充空白字符
tb.left_padding_width = 0
# 不显示边框
# tb.border = 0
# 修改边框分隔符
tb.horizontal_char = '+'

print(tb)

# *++++++++++*++++*+++++++*+++++++*
# |name      |age |height |weight |
# *++++++++++*++++*+++++++*+++++++*
# |大神      |23  |164    |55     |
# |autofelix |25  |174    |65     |
# |飞兔小哥   |27  |184    |69.50  |
# *++++++++++*++++*+++++++*+++++++*

 

七、输出成HTML

import prettytable as pt

# 按行添加数据
tb = pt.PrettyTable()
tb.field_names = ['name', 'age', 'height', 'weight']
tb.add_row(['autofelix', 25, 174, 65])
tb.add_row(['大神', 23, 164, 55])
tb.add_row(['飞兔小哥', 27, 184, 69.5])

# 输出HTML代码
s = tb.get_html_string()
print(s)

# <table>
#     <thead>
#         <tr>
#             <th>name</th>
#             <th>age</th>
#             <th>height</th>
#             <th>weight</th>
#         </tr>
#     </thead>
#     <tbody>
#         <tr>
#             <td>autofelix</td>
#             <td>25</td>
#             <td>174</td>
#             <td>65</td>
#         </tr>
#         <tr>
#             <td>大神</td>
#             <td>23</td>
#             <td>164</td>
#             <td>55</td>
#         </tr>
#         <tr>
#             <td>飞兔小哥</td>
#             <td>27</td>
#             <td>184</td>
#             <td>69.5</td>
#         </tr>
#     </tbody>
# </table>

 

八、复制

import prettytable as pt

# 按行添加数据
tb = pt.PrettyTable()
tb.field_names = ['name', 'age', 'height', 'weight']
tb.add_row(['autofelix', 25, 174, 65])
tb.add_row(['大神', 23, 164, 55])
tb.add_row(['飞兔小哥', 27, 184, 69.5])

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

# +...........+.....+........+........+
# | name      | age | height | weight |
# +...........+.....+........+........+
# | autofelix | 25  | 174    | 65     |
# | 大神      | 23  | 164    | 55     |
# | 飞兔小哥   | 27  | 184    | 69.5   |
# +...........+.....+........+........+

# +...........+.....+........+........+
# |      name | age | height | weight |
# +...........+.....+........+........+
# | autofelix |  25 |    174 |     65 |
# |      大神 |  23 |    164 |     55 |
# |  飞兔小哥  |  27 |    184 |   69.5 |
# +...........+.....+........+........+

 

posted @ 2022-03-30 09:41  sunnyeden  阅读(388)  评论(0编辑  收藏  举报