2015-11-12 35 views
1

我目前正在使用CLI中的連續監視功能。爲了讓數據整齊地打印,我決定使用tabulate,因爲它非常容易,而且幾乎適用於我所投入的所有內容。Python製表符,將元素附加到當前表中

問題是,持續監視功能基於用戶指定的時間間隔進行輪詢,但每次輪詢時都會生成並打印新表。

採取下面的代碼片斷:

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

回答

2

您可以使用str.format做你想要什麼。

注意:當您編寫標題時,您需要知道每列的寬度。

創建行的模板:

print template.format(*table_headers) 

後添加破折號通過寫:

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

然後,您可以通過書面形式創建你的頭

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

而且通過書寫添加行:

for row in mapped_data: 
    print template.format(*row) 
+0

很酷的方法,我需要了解每列的最大寬度是多少,如果是這樣,則破折號的數量可以等於該列的最大寬度。 – Juxhin

相關問題