5个案例让Python输出漂亮的表格( 三 )


<td>服务器01</td>
<td>172.16.0.1</td>
</tr>
<tr>
<td>2</td>
<td>server02</td>
<td>服务器02</td>
<td>172.16.0.2</td>
</tr>
</table>'''
table = from_html(html_string)
print(table[0])
运行结果如下:
 +------+----------+----------+------------+
| 编号 | 云编号 | 名称 | IP地址 |
+------+----------+----------+------------+
| 1 | server01 | 服务器01 | 172.16.0.1 |
| 2 | server02 | 服务器02 | 172.16.0.2 |
+------+----------+----------+------------+
如上示例中 , 我们可以导入html的表格 , 但是不一样的地方是print语句 , 使用html表格导入数据的时候print的必须是列表中的第一个元素 , 否则有可能会报这样的错误 。
这是因为table并不是PrettyTable对象 , 而是包含单个PrettyTable对象的列表 , 它通过解析html而来 , 所以无法直接打印table , 而需要打印table[0]

5个案例让Python输出漂亮的表格

文章插图
表格输出格式
正如支持多种输入一样 , 表格的输出也支持多种格式 , 我们在上面中的例子中已经使用了print的方式输出 , 这是一种常用的输出方式 。
 
A、print直接通过print打印出表格 。这种方式打印出的表格会带边框 。
 
B、输出HTML格式的表格print(table.get_html_string)可以打印出html标签的表格 。
在上面的例子中 , 使用print(table.get_html_string)会打印出如下结果:
 <table>
<tr>
<th>编号</th>
<th>云编号</th>
<th>名称</th>
<th>IP地址</th>
</tr>
<tr>
<td>1</td>
<td>server01</td>
<td>服务器01</td>
<td>172.16.0.1</td>
</tr>
<tr>
<td>2</td>
<td>server02</td>
<td>服务器02</td>
<td>172.16.0.2</td>
</tr>
</table>
5个案例让Python输出漂亮的表格

文章插图
 
选择性输出prettytable在创建表格之后 , 你依然可以有选择的输出某些特定的行.
 
A、输出指定的列print table.get_string(fields=["编号", "IP地址"])可以输出指定的列
 
B、输出前两行通过print(table.get_string(start = 0, end = 2))的可以打印出指定的列 , 当然startend参数让我可以自由控制显示区间 。当然区间中包含start不包含end , 是不是很熟悉这样的用法?
根据输出指定行列的功能 , 我们可以同时指定行和列来输出 , 这里就不说明了 。
 
C、将表格切片从上面的输出区间 , 我们做一个大胆的假设 , 既然区间包含start不包含end这种规则和切片的一样 , 我们可以不可通过切片来生成一个新的表格然后将其打印 。
事实上是可以的 。
 new_table = table[0:2]
print(new_table)
如上代码段中 , 我们就可以打印出0到1行共2行的表格 , python的切片功能异常强大 , 配合切片我们可以自由的输入任意的行 。
 
D、输出排序有时候我们需要对输出的表格进行排序 , 使用print table.get_string(sortby="编号", reversesort=True)就可以对表格进行排序 , 其中reversesort指定了是否倒序排序,默认为False , 即默认正序列排序 。
sortby指定了排序的字段 。
5个案例让Python输出漂亮的表格

文章插图
 
表格的样式A、内置样式通过set_style可以设置表格样式 , prettytable内置了多种的样式个人觉得MSword_FRIENDLY , PLAIN_COLUMNS , DEFAULT这三种样式看起来比较清爽 , 在终端下显示表格本来看起就很累 , 再加上一下花里胡哨的东西看起来就更累 。除了以上推荐的三种样式以外 , 还有一种样式不得不说 , 那就是


推荐阅读