我在Python下面的例子来打印一个表:使用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
看看[我的回答(http://stackoverflow.com/a/9549302/4279)到以前的问题,即'宽度“变量。 – jfs 2012-03-04 02:32:46