2016-08-24 44 views
0

比方說,我在那裏Python的 - 印刷數字與間距格式

list = [(4, 3, 7, 23),(17, 4021, 4, 92)] 

,我要打印的號碼的開出這樣的數字陣列,使輸出看起來有點像這樣:

[ 4 | 3 | 7 | 23 ] 
[ 17 | 4021 | 4 | 92 ] 

如果數字儘可能居中,並且在「|」之間有足夠的空間,允許任何一邊有兩個空格的4位數字。

我會怎麼做呢?

謝謝。

+0

呼喚你的變量'list'可能不是一件好事 – boardrider

回答

2

您也可以使用第三方,如PrettyTabletexttable。使用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 | 
+----+------+---+----+ 
0

這裏:

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 ] 
1

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 ] 
+0

而不是硬編碼_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