为了打印表格数据的标题,我只想使用一种格式字符串line
和一种用于列宽的规范w1, w2, w3
(或者即使w = x, y, z
可能的话)。
我看了这个,但tabulate
等不要让我证明的东西列样format
做。
此方法有效:
head = 'eggs', 'bacon', 'spam'
w1, w2, w3 = 8, 7, 10 # column widths
line = ' {:{ul}>{w1}} {:{ul}>{w2}} {:{ul}>{w3}}'
under = 3 * '='
print line.format(*head, ul='', w1=w1, w2=w2, w3=w3)
print line.format(*under, ul='=', w1=w1, w2=w2, w3=w3)
我必须有各自的名称宽度{w1}
,{w2}
...格式字符串?尝试{w[1]}
,或{w[2]}
给予KeyError
或keyword can't be an expression
。
我也觉得w1=w1, w2=w2, w3=w3
不是很简洁。有没有更好的办法?
这是jonrsharpe对我的OP的评论,其目的是可视化正在发生的事情。
line = ' {:{ul}>{w1}} {:{ul}>{w2}} {:{ul}>{w3}}'
under = 3 * '_'
head = 'sausage', 'rat', 'strawberry tart'
# manual dict
v = {'w1': 8, 'w2':5, 'w3': 17}
print line.format(*under, ul='_', **v)
# auto dict
widthl = [8, 7, 9]
x = {'w{}'.format(index): value for index, value in enumerate(widthl, 1)}
print line.format(*under, ul='_', **x)
关键是我希望能够快速重新排列标题,而不必调整格式字符串。在auto dict
非常漂亮的满足这一要求。
至于以这种方式填写命令:哇!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句