Python在命令行输出美观的表格

《Python在命令行输出美观的表格》

简介

命令行下展示复杂的文本信息着实不易,今天给大家推荐一个不错的表格输出库prettytable,它可以打印出美观的表格,并能很好的支持中文显示。

安装

老规矩,通过pip方式直接安装:

示例

我们直接来看一个示例:

结果为:

在上面的例子中,我们首先导入了prettytable库,然后通过PrettyTable实例化一个叫table的对象。并且我们将['No', 'JOBID', 'NAME', 'STATUS']作为表头,如果没有添加表头,那么会以默认的表头输出,如下:

所以为了更直观的理解,还是要加上表头信息。

添加数据

按行添加数据

在上面的示例中,我们就使用了table.add_row()方法按行添加了数据。需要注意的是添加的数据必须要是列表的形式,而且数据的列表长度要和表头的长度一样。在实际的使用中,我们应该注意数据是否与表头信息一致。

按列添加数据

使用table.add_column()方法能够方便的按照列来添加数据,看下面的示例:

输出结果为:

按列添加数据不需要再实例化表格时添加表头,而是在添加列的时候加入。比如在table.add_column('No', [i for i in range(1, 5)])中,指定了表头为‘No’,列值为[1, 2, 3, 4, 5]。需要注意的是即使列表里面的值不是字符串,也能按照字符串格式显示。

从CSV文件添加数据

PrettyTable提供了从csv文件读取数据的接口。

如果要读取csv文件,使用from_csv()方法。需要注意的是,csv文件不能通过xls直接重命名得到,否则会报错。请使用另存为csv文件的方式。在使用pandas库的时候也一样。

从sql查询值添加

从数据库查询的数据也能够直接通过表格打印出来,下面的例子使用了sqlite3,对于mysql也是一样。

从HTML导入数据

示例如下:

输出结果如下:

在上面的示例中,我们通过from_html()方法导入html的内容,在使用print函数打印时需要注意必须是table[0]。这是因为table并不是PrettyTable的对象,而是包含单个PrettyTable对象的列表,通过html解析而来,所以无法直接打印table,而需要打印table[0]

表格输出格式

prettytable库不仅提供了多种输入格式,还支持多种输出格式,

print()方法

在上面的例子中我们都是使用print()方法输出。这种输出方式打印出来的表格会带边框。

输出HTML格式

print(table.get_html_string())可以打印出html标签的表格。在上面的例子中,使用print(table[0].get_html_string())得到如下结果:

选择性输出

prettytable提供了诸如pandas一样的选择性输出。

指定输出的列

print(table.get_string(fields=['No', 'JOBID'])指定输出这两列。

结果为:

切片输出

得到前两行的信息:

输出排序

有时候我们需要对输出的表格进行排序,使用:

其中reversesortreversesort指定了是否倒序排列,默认为Falsesortby指定了排序的字段。

表格样式

内置样式

prettytable提供了多种内置的表格样式,比如MSWORD_FRIENDLYPLAIN_COLUMNSDEFAULT等等,具体内置样式,可以参考官网自己尝试。

结果为:

自定义样式

除了内置样式以外,我们还可以自定义样式,包括对齐方式,数字输出格式,边框连接符等等。

如下所示:

结果为:

table.align可以设置对齐的方式,值有'l''r''c'分别代表左对齐,右对齐和居中对齐,默认为居中对齐。

table.border控制是否显示边框,默认为True

table.horizontal_char控制横边框样式

table.vertical_char控制竖边框样式

总结

prettytable使用习惯和pandas库差不多。在命令行输出表格方面提供了不错的调用方式,使用非常灵活。

点赞

发表评论

邮箱地址不会被公开。 必填项已用*标注

17 + 12 =