我正在查看Python软件包,这些软件包提供了一种简单的方法来制作格式化的“漂亮”软件包。表格作为文本输出。 This answer provides a few suggestions。问题是,我想按顺序打印我的表(一次一行),类似于记录器。
为了说明,tabulate的输出完全适用于我的应用程序:
from tabulate import tabulate
some_data = [['08:01', 1.00, 32], ['08:02', 1.01, 33], ['08:03', 1.02, 33]]
headers = ['Time', 'x', 'n']
print(tabulate(some_data, headers=headers, tablefmt='plain'))
输出:
Time x n
08:01 1 32
08:02 1.01 33
08:03 1.02 33
但是我想一次一个地完成每个操作: 1.打印标题 2.打印第一行数据 3.打印下一个 4.等等。
当然,我试过这个:
print(tabulate(some_data[0:1], tablefmt='plain'))
输出:
08:01 1 32
这显然不会完美,因为每行的格式每次都会有所不同。所以我需要一个包,你可以先设置表(指定所需的格式,列宽等)。然后一次输出一行数据。
有人知道这些包中的其中一个或我可以导入的其他包是否可行?
答案 0 :(得分:1)
只需使用内置的python format
命令就可以获得非常好的简单表。您可以指定格式字符串,然后将其用作“模板”并传入要应用于该模板的数据。
format_string = "{:<10}{:<8}{:<10}"
print(format_string.format(*headers))
for entry in some_data:
print(format_string.format(*entry))
有关填充等各种选项的完整列表,请参阅https://pyformat.info
答案 1 :(得分:0)
您可以使用.format
使用字符串格式,如下所示:
some_data = [['08:01', 1.00, 32], ['08:02', 1.01, 33], ['08:03', 1.02, 33]]
h = ['Time', 'x', 'n']
print('{:<10s} {:<5s} {:<5s}'.format(*h))
for list_ in some_data:
print('{:<10s} {:.2f} {:<5d}'.format(*list_))
然后会打印以下内容:
Time x n
08:01 1.00 32
08:02 1.01 33
08:03 1.02 33
您可以使用花括号{}
内的值来获得更理想的输出,但这基本上可以完成这项工作。
有关字符串格式的更多信息,请访问:https://docs.python.org/3.5/library/string.html
编辑:已解包*