1

hmtlテンプレートがあり、そこにいくつかの値を追加したいと思います。私はそのようなルールでsting.formatモジュールを使用するつもりでした:

"Hello {name}! I am {years} years old".format(name = "Bob", years = "25").

だから私はそのようなテストを書きました

x = open(source_folder + "template.html", 'r')
  template = x.read()
  template.format(tester = "John")
  studio_html = open(studio_folder + "/" + studio_name + ".html", 'w')
  studio_html.write(template)

ファイルの先頭は次のとおりです。

  {tester}
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1  /DTD/xhtml1-strict.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta ....

ファイルの完全版はここにあります-http://bit.ly/R4zxQ6

スクリプトを実行すると、htmlファイルに他の「{}」コンテナが含まれていることを示すエラーが表示されます...この問題を回避するために何を提案できますか?

よろしく、サーシャ。

4

3 に答える 3

1

使用しないでくださいformat-XML/HTML用のテンプレートエンジン(または一般的にはテキスト置換)を使用する方がはるかに良いです-http://wiki.python.org/moin/Templatingをご覧ください

正規表現を使用して、HTMLに表示される可能性が低い区切り文字を選択することで「自分でロール」することができます。人気のある文字は{{some_value}}ですが、テンプレートエンジンがこれを処理します。

(軽量の代替手段は、http://docs.python.org/library/string.html#template-stringsでstring.Templateを使用し区切り文字を変更することです)

jinja2始めるのはとても簡単ですが、「他の製品も利用可能です」!

于 2012-08-12T14:59:44.383 に答える
1

すでに提案されているように、実際のテンプレートモジュールは最高の柔軟性を提供します。ただし、当初の意図どおりに実行することは可能です。これを行うには、文字列の書式設定に使用してはならない中括弧をエスケープできます。たとえば、次のように変更します。

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

このように:

function MM_swapImgRestore() {{ //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}}

このように2倍/エスケープすると、format/vformatメソッドは解析中にそれらを無視します。置換フィールドには、中括弧のセットを1つだけ含める必要があります{tester}

于 2012-08-12T15:40:14.460 に答える
0

Pythonの文字列の置換がここで役立つはずです。

月と年をhtmlに入れる必要がありましたが、.formatまたは%は役に立たず、それらを試した後、問題が発生していました。{{または{を使用して{をエスケープすることを考えましたが、htmlコードは非常に大きく、500以上の'{'文字。

したがって、以下のように文字列'month_year'でhtmlを更新しました。

body = """<html>
.
.
.
<p>month_year</p>
.
.
.
</html>
"""

body = body.replace('month_year'、datetime.date.today()。strftime( "%B%Y"))

これは私のために働いた

于 2018-09-07T06:07:56.327 に答える