比方說,我在那裏Python的 - 印刷數字與間距格式
list = [(4, 3, 7, 23),(17, 4021, 4, 92)]
,我要打印的號碼的開出這樣的數字陣列,使輸出看起來有點像這樣:
[ 4 | 3 | 7 | 23 ]
[ 17 | 4021 | 4 | 92 ]
如果數字儘可能居中,並且在「|」之間有足夠的空間,允許任何一邊有兩個空格的4位數字。
我會怎麼做呢?
謝謝。
比方說,我在那裏Python的 - 印刷數字與間距格式
list = [(4, 3, 7, 23),(17, 4021, 4, 92)]
,我要打印的號碼的開出這樣的數字陣列,使輸出看起來有點像這樣:
[ 4 | 3 | 7 | 23 ]
[ 17 | 4021 | 4 | 92 ]
如果數字儘可能居中,並且在「|」之間有足夠的空間,允許任何一邊有兩個空格的4位數字。
我會怎麼做呢?
謝謝。
您也可以使用第三方,如PrettyTable
或texttable
。使用texttable
例如:
import texttable
l = [(4, 3, 7, 23),(17, 4021, 4, 92)]
table = texttable.Texttable()
# table.set_chars(["", "|", "", ""])
table.add_rows(l)
print(table.draw())
將產生:
+----+------+---+----+
| 4 | 3 | 7 | 23 |
+====+======+===+====+
| 17 | 4021 | 4 | 92 |
+----+------+---+----+
這裏:
list = [[4, 3, 7, 23],[17, 4021, 4, 92]]
for sublist in list:
output = "["
for index, x in enumerate(sublist):
output +='{:^6}'.format(x)
if index != len(sublist)-1:
output += '|'
output +=']'
print output
輸出:
[ 4 | 3 | 7 | 23 ]
[ 17 | 4021 | 4 | 92 ]
str.center可以使事情變得更容易。
for i in list:
print '[ ' + ' | '.join([str(j).center(4) for j in i]) + ' ]'
輸出:
[ 4 | 3 | 7 | 23 ]
[ 17 | 4021 | 4 | 92 ]
如果你需要一個替代解決方案,你可以使用str.format:
for i in list:
print '[ ' + ' | '.join(["{:^4}".format(j) for j in i]) + ' ]'
輸出:
[ 4 | 3 | 7 | 23 ]
[ 17 | 4021 | 4 | 92 ]
而不是硬編碼_4,_你可能想要做: '_list = [(4,3,7,23),(17,4021,4,92)]; lst = [len(str(x))for i in _list for x in i]; _width = max(lst);' – boardrider
呼喚你的變量'list'可能不是一件好事 – boardrider