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))
jak mogę użyć longest
w miejsce 20
aby moje formatowanie zawsze pasowało? Nie chcę też, aby mój kod wyglądał brzydko, więc jeśli to możliwe, użyj formatowania lub w inny sposób.
Odpowiedzi:
4 dla odpowiedzi № 1Możesz przekazać szerokość bezpośrednio w formacie:
for cols in zip(l[::3],l[1::3],l[2::3]):
print("{:^{width}}|{:^{width}}|{:^{width}}".format(*cols,width=longest))
(na podstawie przykładu cytowanego w dokumentacja)
i nie musisz ręcznie rozpakowywać kolumn. Po prostu rozpakuj je za pomocą *
w format
połączenie.
3 dla odpowiedzi № 2
Formaty można zagnieżdżać:
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))
1 dla odpowiedzi nr 3
Próbować:
(str(longest).join(["{:^","}|{:^","}|{:^","}"]).format(col1,col2,col3))
1 dla odpowiedzi nr 4
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))
Możesz najpierw utworzyć szablon, a następnie wstawić kolumny.
Można użyć podwójnych nawiasów klamrowych, jeśli chcesz dosłownie mieć nawiasy klamrowe na wyjściu:
>>> "{{ {num} }}".format(num=10)
"{ 10 }"