根据最大长度格式化字符串

时间:2017-01-12 13:12:02

标签: python python-3.x

<html>
    <?php include "/feeds/phpscript.php"; ?>
</html>

如何使用<script>代替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)) ,以便我的格式始终适合?我也不希望我的代码看起来很难看,所以如果可能的话,请使用格式化或其他方式。

4 个答案:

答案 0 :(得分:4)

您可以直接以以下格式传递宽度:

for cols in zip(l[::3],l[1::3],l[2::3]):
    print('{:^{width}}|{:^{width}}|{:^{width}}'.format(*cols,width=longest))

(改编自documentation中引用的例子)

并且您不必手动解压缩列。只需在*来电中使用format解压缩。

答案 1 :(得分:3)

格式可以嵌套:

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))

答案 2 :(得分:1)

尝试:

(str(longest).join(['{:^','}|{:^','}|{:^','}']).format(col1,col2,col3))

答案 3 :(得分:1)

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 }'