使用Python制表,将元素附加到当前表

时间:2015-11-12 18:13:40

标签: python python-2.7

我目前正在CLI中开展持续监控功能。为了整齐地打印数据,我决定使用tabulate,因为它非常容易,并且适用于我抛出的所有内容。

问题在于连续监控功能基于用户指定的时间间隔进行轮询,但每次轮询时,都会生成并打印一个新表。

采取以下片段:

table_headers = ['Date', 'Message', 'Type']
mapped_data = []
...
...
...
print tabulate(mapped_data, headers=table_headers)

这将是单次迭代的示例,...是处理和追加数据的地方。但输出结果如下:

Date                       Message           Type
-------------------------  --------------  ------
Thu 12 Nov 2015, 18:55:26  Message.             1
Thu 12 Nov 2015, 18:55:58  Message.             2
Date    Message    Type
------  ---------  ------
Date    Message    Type
------  ---------  ------
Date    Message    Type
------  ---------  ------

理想情况下,我想构建一个通用表并随着时间的推移构建它。请注意,必须在收到消息后立即打印该消息。因此,我不能简单地等到过程完成并一次打印所有内容。

使用Python 2.7

1 个答案:

答案 0 :(得分:3)

您可以使用str.format做您想做的事。

注意:在编写标题时,您需要知道每列的宽度。

创建行的模板:

template = '{:<25} {:<14} {:<6}' # numbers are width, '<' means 'align to left'

然后,您可以通过以下方式创建标题:

print template.format(*table_headers)

通过写下来添加破折号:

# changes fill character to dash, and fills template with empty strings
print template.replace(':', ':-').format('', '', '')

通过写:

添加行
for row in mapped_data:
    print template.format(*row)