简介
prettytable/PTable是一个可以在终端快速绘制出漂亮表格的python库。也支持html格式的表格绘制。
原项目prettytable托管于Google Code,PTable是其在GitHub的一个fork,完全兼容prettytable。
完整的文档可参考ReadTheDocs,这里只做Python库的简单介绍。
最常用的示例:
from prettytable import PrettyTable  | 
输出(有些浏览器上查看时,可能稍微有些排版错位):
+-----------+------+---------+----------+
|   城市名   | 面积  |   人口   | 年降雨量  |
+-----------+------+---------+----------+
|  Adelaide | 1295 | 1158259 |  600.5   |
|  Brisbane | 5905 | 1857594 |  1146.4  |
|   Darwin  | 112  |  120900 |  1714.7  |
|   Hobart  | 1357 |  205556 |  619.5   |
|   Sydney  | 2058 | 4336374 |  1214.8  |
| Melbourne | 1566 | 3806092 |  646.9   |
|   Perth   | 5386 | 1554769 |  869.4   |
+-----------+------+---------+----------+
安装
pip install prettytable
示例
添加行/列
上面已经演示了如何通过”row by row”的方式添加一行:
x.add_row(["Perth", 5386, 1554769, 869.4])
也可以通过”column by column”的方式来添加一列:
x.add_column(u"气温", [11, 12, 13, 14, 15, 16, 17])
删除行
删除table中的数据的方式有三种:
del_row 参数为一个数字index,可以删除指定row,数字从0开始算:
x.del_row(0)  
clear_rows 删除所有row,但保留table的字段名:
x.clear_rows()
clear 删除所有row和table的字段名,但保留table的样式:
x.clear()
从CSV文件导入数据
from prettytable import from_csv  | 
从数据库导入数据
import sqlite3  | 
打印输出
print(x)
或者:
print(x.get_string())
使用get_string()可以带入参数,比如只想要输出某些列:
print(x.get_string(fields=[u"城市名", u"人口"]))
只想要输出某些行:
print(x.get_string(start=1, end=4))
输出对齐
x.align[u"城市名"] = "l"  | 
其中,l表示left, r表示right,c表示center。默认是c居中的对齐方式。
表格排序
print(x.get_string(sortby=u"人口", reversesort=True))  | 
输出(有些浏览器上查看时,可能稍微有些排版错位):
+-----------+------+---------+----------+
|   城市名   | 面积  |   人口   | 年降雨量  |
+-----------+------+---------+----------+
|   Sydney  | 2058 | 4336374 |  1214.8  |
| Melbourne | 1566 | 3806092 |  646.9   |
|  Brisbane | 5905 | 1857594 |  1146.4  |
|   Perth   | 5386 | 1554769 |  869.4   |
|  Adelaide | 1295 | 1158259 |  600.5   |
|   Hobart  | 1357 |  205556 |  619.5   |
|   Darwin  | 112  |  120900 |  1714.7  |
+-----------+------+---------+----------+
输出html
print(x.get_html_string())  | 
支持html样式(比如在邮件中插入html代码会用到):
print(x.get_html_string(attributes={"class":"red_table", "border": "1"}))  | 
More
文档与更多示例参考: