在Python中以格式化表的形式顺序打印数据输出

在Python中以格式化表的形式顺序打印数据输出,python,dataframe,console,format,output,Python,Dataframe,Console,Format,Output,我正在研究Python包,它提供了一种简单的方法,可以将格式化的“漂亮”表作为文本输出。问题是,我想按顺序(一次一行)打印我的表,类似于记录器 举例来说,的输出对于我的应用程序来说非常好: 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(so

我正在研究Python包,它提供了一种简单的方法,可以将格式化的“漂亮”表作为文本输出。问题是,我想按顺序(一次一行)打印我的表,类似于记录器

举例来说,的输出对于我的应用程序来说非常好:

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
08:01  1  32
但我想一次做一个操作,而不是一次完成所有操作: 1.打印标题 2.打印第一行数据 3.打印下一个 4.等等

当然,我试过:

print(tabulate(some_data[0:1], tablefmt='plain'))
输出:

Time       x    n
08:01   1      32
08:02   1.01   33
08:03   1.02   33
08:01  1  32
这显然不能很好地工作,因为每一行的格式每次都不同。因此,我需要一个包,您可以在其中首先设置表(指定所需的格式、列宽等)。然后一次输出一行数据


有人知道我可以导入这些包中的一个或另一个包吗?

只需使用内置python
format
命令,就可以得到非常好的简单表。您可以指定格式字符串,然后将其用作“模板”,并传入要应用于该模板的数据

format_string = "{:<10}{:<8}{:<10}"
print(format_string.format(*headers))
for entry in some_data:
    print(format_string.format(*entry))
format_string=“{:str.format()
您可以使用
.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_))
您可以在花括号
{}
中使用这些值来获得更理想的输出,但这基本上完成了这项工作

有关字符串格式的详细信息,请参见:


编辑:使用解包
*

你必须一次只做一行吗?很容易建立一个所有结果的单一列表,然后打印一次-除非你想在处理数据时进行“实时”更新?是的,我想对每行进行实时更新。类似于记录器。通常每分钟一次。显然我可以写我自己的代码来做这件事,但我正在寻找一个现有的软件包。谢谢。是的,我知道我可以写我自己的代码来做这件事。我想先看看是否有一个现有的软件包来做这件事。另外,每次我运行脚本时,宽度和列数可能会改变,这使得手动设置格式变得单调乏味。你应该能够根据数据中存在的列数动态生成格式字符串-虽然在进行迭代时宽度总是一个猜测,因为在到达最宽的列之前,您不会知道最宽的列-尽管标题列宽可能是一个很好的近似值。是的,我知道。事实上,编写代码来实现这一点已经进行了一半我想“等一下,一定有一个现成的软件包”。