我在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
我在Python中有以下示例来打印表:job_IDs = ['13453','123','563456']; memory_used = [30,150.54,20.6]; memory_units = ['MB','GB','MB'];对于范围内的我(len(job_IDs)):...
job_IDs = ['13453', '123', '563456'];
memory_used = ['30', '150.54', '20.6'];
memory_units = ['MB', 'GB', 'MB'];
w1=15
w2=6
w3=6
w4=3
for i in range(len(job_IDs)):
v=memory_used[i].split('.') if '.' in memory_used[i] else (memory_used[i], '0')
print "Job {item:{w1}} {value[0]:>{w2}}.{value[1]:<{w3}} {units:{w4}}".format(
item=job_IDs[i]+':', w1=w1, w2=w2,w3=w3,w4=w4, value=v, units=memory_units[i])