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>"

  ............
  ............
4

3 回答 3

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()您插入的每个项目。另请参阅:在 Python 中转义 HTML 的最简单方法是什么?

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

希望有帮助。

于 2013-08-23T21:00:58.963 回答
0

调试问题的步骤:

  1. 确定导致问题的条件,尤其是数据集。
  2. 减少。从数据集中删除信息,直到您确切知道导致程序失败的原因。
  3. 仅使用该信息调试程序。
  4. 使用完整数据集和之前的测试进行回归测试。
于 2013-08-23T20:57:43.113 回答
0

您的 HTML 存在很多很多问题,但最明显的问题是在第 19 行引起您的问题:

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

那个<table!>“标签”在那里做什么?在提出问题之前,您是否阅读过它提供给您的 HTML?

于 2013-08-23T22:55:34.057 回答