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

この方法で html を Python で構築すると、まったく読みにくく、保守が困難になります。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 に答える