2013-08-23 29 views
2

我想在python中使用下面的HTML代碼創建一個表,它適用於大多數情況下,但對於某些情況下表得到像下面一樣搞砸了,請參閱屏幕截圖..任何輸入什麼是錯誤如何調試它的任何變通辦法來解決它真的很感激任何輸入表創建得到搞砸

爲搞砸行HTML源代碼:???http://pastie.org/8263837

........... 
    ........... 
    GerritMailBody = GerritMailBody + "<td>" + GerritInfo['TargetName'].rstrip('\n') + "</td>" 
    GerritMailBody = GerritMailBody + "<td>" + GerritInfo['Assignee'].rstrip('\n') + "</td>" 
    usernames.append(GerritInfo['Assignee'].rstrip('\n')) 

    #Below is the block that is getting messed up 
    GerritMailBody = GerritMailBody + "<td height=\"150\%\">" 
    GerritMailBody = GerritMailBody + "<table>" 
    for item in GerritInfo['GerritUrl']: 
    GerritMailBody = GerritMailBody + "<tr>" 
    GerritMailBody = GerritMailBody + "<td>" 
    GerritMailBody = GerritMailBody + item.rstrip('\n/') + "<br>" 
    GerritMailBody = GerritMailBody + "</td>" 
    GerritMailBody = GerritMailBody + "</tr>" 

    GerritMailBody = GerritMailBody + "</table>" 
    GerritMailBody = GerritMailBody + "</td>" 

    ............ 
    ............ 
+0

後輸入數據和輸出HTML(**源**,而不是圖片) –

+0

@MarioRossi - 圖片顯示的輸出...我已經分享了導致這個..的原因片段沒有#5應該在與第4行相同的格式,但正如你所看到的,它會變得混亂。 – user2125827

+0

@ user2125827他表示HTML輸出,而不是視覺輸出。這是沒有用 –

回答

1

在Python中以這種方式構造html根本不可讀,並且難以維護。切換到模板引擎就像mako

from mako.template import Template 
print Template("hello ${data}!").render(data="world") 

定義你的消息體模板的HTML文件,通過render有數據填充它,看到消息作爲字符串:

from mako.template import Template 

mytemplate = Template(filename='body.html') 
print mytemplate.render(data=data) 

相信我,這會讓你的生活更輕鬆,更安寧。一團糟的HTML的


可能的原因是要插入到HTML數據包含一些字符(<<&)其他應當逃脫。考慮在您插入的每個項目上調用cgi.escape()。另請參閱:What's the easiest way to escape HTML in Python?

同樣,轉義工具在大多數模板引擎中都是開箱即用的。

希望有所幫助。

+0

我現在無法更改代碼..需要以這種方式工作..完整的代碼是http://pastie.org/8263783 ..任何東西從代碼 – user2125827

+0

@ user2125827可以看出,我打賭你輸入的數據有時候有些字符需要轉義。 – alecxe

+0

@ user2125827,如果你會切換到「mako」 - 它會爲你逃跑:)不要重新發明輪子。 – alecxe

0

步驟來調試問題:

  1. 確定導致問題的條件,特別是數據集。
  2. 減少。從數據集中刪除信息,直到您確切地知道程序失敗的原因。
  3. 只用該信息調試程序。
  4. 使用完整數據集加上以前的測試進行迴歸測試。
+0

任何你可以告訴什麼可能是錯誤的? – user2125827

+0

@ user2125827沒有什麼會一見鍾情。 –

+0

@ Mario - messedup行的HTML輸出是pastie.org/8263837 – user2125827

0

有很多很多的問題,你的HTML,但這裏是最明顯的一個在第19行造成您的問題:

<td style='padding:.75pt .75pt .75pt .75pt'><table!></td>

那是什麼<table!>「標籤」在那裏做什麼?在問你的問題之前,你讀過它提供給你的HTML嗎?

+0

雅,這可能是一個......任何想法,爲什麼會根據上面共享的代碼去那裏? – user2125827