表创建搞砸了

时间:2013-08-23 20:51:10

标签: python html

我正在尝试使用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>"

  ............
  ............

3 个答案:

答案 0 :(得分: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?

同样,转义在大多数模板引擎中都是开箱即用的。

希望有所帮助。

答案 1 :(得分:0)

调试问题的步骤:

  1. 确定导致问题的条件,尤其是数据集。
  2. 减少。从数据集中删除信息,直到确切地知道程序失败为止。
  3. 仅使用该信息调试程序。
  4. 使用完整数据集加上之前的测试进行回归测试。

答案 2 :(得分:0)

您的HTML存在许多问题,但这是导致第19行问题的最明显问题:

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

<table!>&#34;标记&#34;在那里?在提出问题之前,你读过它给你的HTML吗?