python输出表格样式_Python⽤prettytable输出漂亮的表格Python⽤prettytable输出漂亮的表格
⼀、前⾔
prettytable可以打印出美观的表格,并且对中⽂⽀持相当好
⼆、安装
prettytable并⾮python的内置库,需要安装
pip install prettytable
三、⼀个⼩⽰例
我们先来看⼀个⽰例:
#!/usr/bin/python#**coding:utf-8**import sysfrom prettytable import PrettyTablereload(sys)sys.setdefaultencoding('utf8')table = PrettyTable(['编号','云编号','名称
以上⽰例运⾏结果如下:
$ python p.py +------+----------+----------+------------+| 编号 | 云编号 | 名称 | IP地址 |+------+----------+----------+------------+| 1 | server01 | 服务器01 | 172.1
在以上的⽰例中,我们通过form导⼊了表格库。 table实例化了⼀个表格库,并且添加了['编号','云编号','名称','IP地址']为表头,如果
没有添加表头,那么会以默认的Field+编号显⽰,例如:
+---------+----------+----------+------------+| Field 1 | Field 2 | Field 3 | Field 4 |+---------+----------+----------+------------+
所以为更直观看出每⼀列的意义,还是要添加表头的。
四、添加数据
prettytable提供了多种的添加数据的⽅式,最常⽤的应该就是按⾏按列添加数据了。
A:按⾏添加数据 table.add_row()
在上⾯简单的⽰例中,我们就是按⾏添加数据的。
添加的数据必须要是列表的形式,⽽且数据的列表长度要和表头的长度⼀样。在实际的使⽤中,我们应该要关注到添加的数据是否和
表头对应,这⼀点很重要。
B:按列添加数据 table.add_column()
看下⾯的⽰例:
#!/usr/bin/python#**coding:utf-8**import sysfrom prettytable import PrettyTablereload(sys)sys.setdefaultencoding('utf8')table = PrettyTable()table.add_column +-------+--------+------------+| index | 项⽬ | 值 |+-------+--------+------------+| 1 | 编号 | 1 || 2 | 云编号 | server01 || 3 | 名称 | 服务器01 || 4
以上⽰例中,我们通过add_column来按列添加数据,按列添加数据不需要在实例化表格的时候制定表头,它的表头是在添加列的时
候指定的。
table.add_column('项⽬', ['编号','云编号','名称','IP地址'])这⼀⾏代码为例,项⽬指定了这个列的表头名为"项⽬",['编号','云编号','名
称','IP地址']为列的值,同样为列表。
C:从csv⽂件添加数据
PrettyTable不仅提供了⼿动按⾏按列添加数据,也⽀持直接从csv⽂件中读取数据。
#!/usr/bin/python#**coding:utf-8**import sysfrom prettytable import PrettyTablefrom prettytable import from_csv reload(sys)sys.setdefaultencoding('utf8')table 如果要读取cvs⽂件数据,必须要先导⼊from_csv,否则⽆法运⾏。上⾯的⽰例运⾏结果如下:
+------+----------+----------+------------+| 编号 | 云编号 | 名称 | IP地址 |+------+----------+----------+------------+| 1 | server01 | 服务器01 | 172.16.0.1 || 2 | s csv⽂件不能通过xls直接重命名得到,会报错。如果是xls⽂件,请⽤另存为csv获得csv⽂件
D:从SQL查询值添加
从数据库查询出来的数据可以直接导⼊到表格打印,下⾯的例⼦使⽤了sqlite3,如果使⽤的是mysql也是⼀样的,只要能查询到数据就能导⼊到表格中
#!/usr/bin/python#**coding:utf-8**import sysfrom prettytable import PrettyTablefrom prettytable import
from_db_cursor import sqlite3reload(sys)sys.setdefault +------+----------+----------+------------+| 编号 | 云编号 | 名称 | IP地址 |+------+----------+----------+------------+| 1 | server01 | 服务器01 | 172.16.0.1 || 2 | s E:从HTML导⼊数据
⽀持从html的表格中导⼊,请看下⾯这个例⼦:
#!/usr/bin/python#**coding:utf-8**import sysfrom prettytable import PrettyTablefrom prettytable import from_html reload(sys)sys.setdefaultencoding('utf8')htm
编号云编号名称IP地址1server01服务器01172.16.0.12server02服务器02172.16.0.2'''table = from_html(html_string)print(table[0])
运⾏结果如下:
+------+----------+----------+------------+| 编号 | 云编号 | 名称 | IP地址 |+------+----------+----------+------------+| 1 | server01 | 服务器01 | 172.16.0.1 || 2 | s
如上⽰例中,我们可以导⼊html的表格,但是不⼀样的地⽅是print语句,使⽤html表格导⼊数据的时候print的必须是列表中的第⼀个元素,否则有可能会报[]这样的错误。
这是因为table并不是`PrettyTable对象,⽽是包含单个PrettyTabl对象的列表,它通过解析html⽽来,所以⽆法直接打印table,⽽需
要打印table[0]
五、表格输出格式
正如⽀持多种输⼊⼀样,表格的输出也⽀持多种格式,我们在上⾯中的例⼦中已经使⽤了print的⽅式输出,这是⼀种常⽤的输出⽅
式。
A:print
直接通过print打印出表格。这种⽅式打印出的表格会带边框。
B:输出HTML格式的表格
_html_string())可以打印出html标签的表格。
在上⾯的例⼦中,使⽤_html_string())会打印出如下结果:
<table> <tr> <th>编号th> <th>云编号th> <th>名称th> <th>IP地址th> tr> <tr> <td>1td> <td>server01td> <td>服务器01td> <td>172.16.0.1td 六、选择性输出
prettytable在创建表格之后,你依然可以有选择的输出某些特定的⾏.
A:输出指定的列
_string(fields=["编号", "IP地址"])可以输出指定的列
B: 输出前两⾏
通过_string(start = 0, end = 2))的可以打印出指定的列,当然start和end参数让我可以⾃由控制显⽰区间。当然区间中包含start不包含end,是不是很熟悉这样的⽤法?根据输出指定⾏列的功能,我们可以同时指定⾏和列来输出,这⾥就不说明了。
C:将表格切⽚
从上⾯的输出区间,我们做⼀个⼤胆的假设,既然区间包含start不包含end这种规则和切⽚的⼀样,我们可以不可通过切⽚来⽣成⼀
个新的表格然后将其打印。事实上是可以的。
new_table = table[0:2]print(new_table)
如上代码段中,我们就可以打印出0到1⾏共2⾏的表格,python的切⽚功能异常强⼤,配合切⽚我们可以⾃由的输⼊任意的⾏。
D :输出排序
有时候我们需要对输出的表格进⾏排序,使⽤_string(sortby="编号", reversesort=True)就可以对表格进⾏排序,其
中reversesort指定了是否倒序排序,默认为False,即默认正序列排序。sortby指定了排序的字段。
七、表格的样式
A:内置样式
通过set_style()可以设置表格样式,prettytable内置了多种的样式个⼈觉得MSWORD_FRIENDLY,PLAIN_COLUMNS,DEFAULT
这三种样式看起来⽐较清爽,在终端下显⽰表格本来看起就很累,再加上⼀下花⾥胡哨的东西看起来就更累。
html表格元素除了以上推荐的三种样式以外,还有⼀种样式不得不说,那就是RANDOM,这是⼀种随机的样式,每⼀次打印都会在内置的样式中随
机选择⼀个,⽐较好玩。具体内置了⼏种样式,请各位参考官⽹完整⾃⼰尝试输出看看。
#!/usr/bin/python#**coding:utf-8**import sysfrom prettytable import PrettyTablefrom prettytable import MSWORD_FRIENDLYfrom prettytable import PLAIN_C B:⾃定义样式
除了内置的样式以外,PrettyTable也提供了⽤户⾃定义,例如对齐⽅式,数字输出格式,边框连接符等等
C:设置对齐⽅式
align提供了⽤户设置对齐的⽅式,值有l,r,c⽅便代表左对齐,右对齐和居中 如果不设置,默认居中对齐。
D:控制边框样式
在PrettyTable中,边框由三个部分组成,横边框,竖边框,和边框连接符(横竖交叉的链接符号)
#!/usr/bin/python#**coding:utf-8**import sysfrom prettytable import PrettyTablereload(sys)sys.setdefaultencoding('utf8')table = PrettyTable(['编号','云编号','名称
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论