我在 Python 中有以下示例来打印表格:
job_IDs = ['13453', '123', '563456'];
memory_used = [30, 150.54, 20.6];
memory_units = ['MB', 'GB', 'MB'];
for i in range(len(job_IDs)):
print "Job {item:15} {value[0]:>6}.{value[1]:<6} {units:3}".format(
item=job_IDs[i]+':', value=memory_used[i].split('.') if '.' in memory_used[i]
else (memory_used[i], '0'), units=memory_units[i])
这导致:
Job 13453: 30 MB Job 123: 150.54 MB Job 563456: 20.6 GB
垂直对齐对于我的需要是正确的,但是水平填充是在代码中手动硬编码的,它说:
"Job {item:15} {value[0]:>6}.{value[1]:<6} {units:3}"
(上面的“填充参数”是15, 6, 6, 3
)
我想:
理想情况下,自动确定填充值(即根据每个字段的最大宽度计算),而不必在上面的语句中对它们进行硬编码。
在上面的示例中,最好有一个片段使用 、 和 输出中最宽条目的宽度,
job_IDs
在memory_used
列memory_units
之间留一个空格:Job 13453: 30 MB Job 123: 150.54 MB Job 563456: 20.6 GB
或者,我也对允许我在变量中指定此类填充的解决方案感兴趣(以防我想控制赋予每列的宽度)。
我对这两个问题的解决方案感兴趣:自动计算填充,以及使用变量指定填充。
顺便说一句,这个问题的灵感来自另一个问题: Using Python's Format Specification Mini-Language to align floats