longest = len(max(l))
for col1, col2, col3 in zip(l[::3],l[1::3],l[2::3]):
print('{:^20}|{:^20}|{:^20}'.format(col1,col2,col3))
如何使用longest
替代20
,以使格式始终适合?如果可能的话,使用格式或其他方式,使我的代码看起来不那么丑陋。
longest = len(max(l))
for col1, col2, col3 in zip(l[::3],l[1::3],l[2::3]):
print('{:^20}|{:^20}|{:^20}'.format(col1,col2,col3))
如何使用longest
替代20
,以使格式始终适合?如果可能的话,使用格式或其他方式,使我的代码看起来不那么丑陋。
for cols in zip(l[::3],l[1::3],l[2::3]):
print('{:^{width}}|{:^{width}}|{:^{width}}'.format(*cols,width=longest))
(改编自文档中引用的示例)
您无需手动拆开列。只需在format
调用中使用*
即可解包它们。
格式可以嵌套:
longest = len(max(l))
for col1, col2, col3 in zip(l[::3],l[1::3],l[2::3]):
print('{:^{len}}|{:^{len}}|{:^{len}}'.format(col1,col2,col3, len=longest))
尝试:
(str(longest).join(['{:^','}|{:^','}|{:^','}']).format(col1,col2,col3))
longest = len(max(l))
# tpl will be '{:^20}|{:^20}|{:^20}'
tpl = '{{:^{longest}}}|{{:^{longest}}}|{{:^{longest}}}'.format(longest=longest)
for col1, col2, col3 in zip(l[::3],l[1::3],l[2::3]):
print(tpl.format(col1,col2,col3))
>>> "{{ {num} }}".format(num=10)
'{ 10 }'