一、简述
PrettyTable是一个简单的Python库,旨在快速,轻松地在视觉上吸引人的ASCII表中表示表格数据。 它的灵感来自PostgreSQL shell psql中使用的ASCII表。 PrettyTable允许选择要打印的列,列的独立对齐(左对齐或右对齐或居中)以及通过指定行范围打印“子表”。GitHub
二、安装与使用
pip install PrettyTable
import prettytable as pt
|
三、相关API介绍
3.1、创建表
3.1.1、普通创建表:
import prettytable as pt tb = pt.PrettyTable()
|
3.1.2、从已有的文件中创建
from prettytable import from_csv fp = open("mytable.csv", "r") pt = from_csv(fp) fp.close()
from prettytable import from_html pts = from_html(html_string)
from prettytable import from_db_cursor db_cur.execute("SELECT * FROM mytable") pt = from_db_cursor(db_cur)
|
3.2、添加元素
pt.add_row()
pt.add_column()
|
3.3、输出格式
print(pt)
print(pt.get_string())
print(pt.get_html_string()) print(pt.get_html_string(attributes = {"class": "foo"}))
print(pt.get_string(fields = ["City name", "Population"]))
print(pt.get_string(start = 0, end = 3))
new_table = old_table[0:3] print(new_table)
print(x.get_string(sortby="Annual Rainfall", reversesort=True))
|
3.4、控制表样式
3.4.1、临时设置表样式:
from prettytable import MSWORD_FRIENDLY x.set_style(MSWORD_FRIENDLY) print(x)
|
手动更改表格样式:
border
- 布尔选项(必须是True
或False
),是否在表格周围绘制边框;
header
- 布尔选项(必须是True
或False
),表格的第一行是否显示所有字段名称的标题;
header_style
- 控制标题中字段名称的大写,允许值如下,默认值为None:
cap
:每个单词的首字母大写;
title
:标题大小写;
upper
:全部为大写;
lower
:全部为小写;
None
:不更改原始字段名称设置;
hrules
- 控制行后水平规则的打印,可选值为FRAME
,ALL
,NONE
;这些是prettytable
模块内定义的变量,因此请确保导入或使用prettytable.FRAME
等:
vrules
- 控制列之间垂直规则的打印,可选值为:FRAME
,ALL
,NONE
;
align
- 水平对齐,可选值为:空,l
(左),c
(中),r
(右);
valign
- 垂直对齐,可选至为:空,t
(顶部),m
(中间),b
(底部);
int_format
- 控制整数数据的格式,为一个字符串,为“%”和“d”之间print "%d" % 42
;
float_format
- 控制浮点数据的格式,为一个字符串,为“%”和“f”之间print "%f" % 4.2
;
padding_width
- 列数据两侧的空格数(仅在左右填充为None时使用);
left_padding_width
- 列数据左侧的空格数;
right_padding_width
- 列数据右侧的空格数;
vertical_char
- 用于绘制垂直线的单个字符,默认是|
;
horizontal_char
- 用于绘制水平线的单个字符,默认是-
;
junction_char
- 用于绘制线结的单个字符,默认是+
;
3.4.2、长期设置样式:
如果您在创建表时知道所需的样式选项,则可以使用构造函数的关键字参数指定它们,更改相应的属性即可为“长期”设置选项;例如,以下两个代码块是等效的:
x = PrettyTable() x.border = False x.header = False x.padding_width = 5
x = PrettyTable(border=False, header=False, padding_width=5)
|
3.4.3、列设置
print(x.get_string(align="l"))
x.align = "l"
x.align["City name"] = "l" x.align["Population"] = "c" x.align["Area"] = "r"
x.align = "l"
|