2012-09-27 7 views
3

我正在使用Django爲足球隊創建一個站點記錄,我有一個「漂亮」的CSS等顯示,但作爲備份/舊學校版本,我試圖讓代碼將信息寫入基本的.html文件,該文件使用rjust,ljust等格式化文本。在下面的代碼中,如果我刪除了鏈接代碼,並且只顯示團隊名稱的字符串,則所有內容都會正確排列。一旦我添加鏈接的HTML,雖然列不排隊,完全沒有重擊。我做錯了什麼?包括林時Python不能正確顯示

standings = Team.objects.filter(active=True).order_by('-wp') 

output += '<pre>\n' 
output += '%s %s %s %s\n' % (str('Rk').rjust(3), str('Team').ljust(50), str('W').rjust(2), str('L').rjust(2)) 
output += '%s %s %s %s\n' % (str('--').rjust(3), str('----').ljust(50), str('-').rjust(2), str('-').rjust(2)) 

for row in mpi: 
    the_team = "<a href=\"%s\">%s</a>" % (row.slug, row.name) 
    output += '%s %s %s %s\n' % (str(row.rank).rjust(3), str(the_team).ljust(50), str(row.won).rjust(2), str(row.lost).rjust(2)) 
output += '</pre>' 
+0

你意識到the_team變量中的整個錨標記是正確的,而不僅僅是row.name的值嗎?這將有助於看到意外的輸出。 – Omnikrys

+0

對,如果我在包圍%s的輸出行中包含錨標記,那麼它將包含整個行,包括由ljust添加的空格。 – user1703361

+0

你應該考慮對字符串使用'format'工具,例如''foo {:> 10s}「.format(」bar「)''。在文檔中閱讀它! – hochl

回答

0

的字符串"<a href=\"%s\">%s</a>"包含未在瀏覽器中顯示一些字符,要格式化的源代碼,而不是可視化。

替換str(row.the_team).ljust(50)str(row.the_team).ljust(50+len(row.slug)+15)因爲有15個看不見的字符(即<a href=""></a>)加上slu。。

更新:您可能想要刪除一些str。如果某個值已經是一個字符串,則不需要再次將其重新轉換爲字符串。您也可以將較長的行分割爲較短的一行。

output = '<pre>\n' 
output += '%s %s%s%s\n' % ('Rk'.rjust(3), 'Team'.ljust(50), 'W'.rjust(2), 'L'.rjust(2)) 
output += '%s %s%s%s\n' % ('--'.rjust(3), '----'.ljust(50), '-'.rjust(2), '-'.rjust(2)) 

for team in teams: 
    link = '<a href="%s">%s</a>' % (team.slug, team.name) 
    link = link.ljust(50 + len(team.slug) + 15) 
    rank, won, lost = str(team.rank).rjust(3), str(team.won).rjust(2), str(team.lost).rjust(2) 
    output += '%s %s%s%s\n' % (rank, link, won, lost) 
output += '</pre>' 
print output