2014-03-26 80 views
0

我有一個關於格式輸出的問題。漂亮的大概簡單,但我一直在努力的東西像10小時,我只是想不通,爲什麼它不會工作在Python中處理函數輸入3.3

elif command.startswith("TOP") and len(command) > 3: 
     digi_trans = str.maketrans('', '', string.digits) 
     char_trans = str.maketrans('', '', string.ascii_letters) 
     bracket_trans = str.maketrans('', '', "[']") 
     subset = command.translate(digi_trans)[3:] 
     if subset == "EDITORS": 
      top_names = [] 
      count = 0 
      count_limit = int(command.translate(char_trans)) 
      top_names = sorted(name_temp.items(), key=lambda x:x[1], reverse=True) 
      largest = heapq.nlargest(count_limit, top_names, key=operator.itemgetter(1, 1)) 
      print(largest) 

這是我的代碼,與我搞亂的一部分。 top_names列表只是兩個項目對的一個排序列表,一個名稱和一個值。

目前,它輸出(假設我想在我的命令前2個值):

[('Tzartzam', [16]), ('Quercusrobur', [14])] 

我想爲它的輸出是這樣的:

-------------------- 
Tzartzam  [16] 
Quercusrobur [14] 
-------------------- 

有趣的事情是的,我已經有一部分程序完成了幾乎完全相同的事情,但是我不明白我在做什麼不同,所以如果有人會指出我在正確的方向,我只會感激它:(

+1

使用'{} .format()' – sshashank124

+1

代碼中只有一行是有關您的問題!另外:「我已經有一部分程序完成了幾乎完全相同的事情」 - 所以將它作爲一個函數,並從兩個地方調用它。 – jonrsharpe

+0

我已經嘗試過,但總是因爲某種原因給我一個列表索引超出範圍的錯誤。我確信我只是過度疲勞,因爲這個原因,它似乎很簡單。 – user3268270

回答

0

您可以使用rjust和ljust:

top_names=[('Tzartzam', [16]), ('Quercusrobur', [14])] 
print "--------------------" 
for n in top_names: 
    print n[0].ljust(16),str(n[1][0]).rjust(3) 
print "--------------------" 

輸出:

-------------------- 
Tzartzam   16 
Quercusrobur  14 
--------------------