ホームページ  >  記事  >  バックエンド開発  >  Python テンプレートの使用ガイド

Python テンプレートの使用ガイド

WBOY
WBOYオリジナル
2016-06-16 08:42:071217ブラウズ

テンプレートは間違いなく優れたもので、文字列の形式を修正して再利用できます。同時に、Template を使用すると、開発者は文字列の形式と内容を個別に検討できるため、開発者へのプレッシャーが事実上軽減されます。

テンプレートは文字列内のクラスに属しているため、使用したい場合は次の方法で呼び出すことができます

from string import Template

テンプレートには特別な識別子 $ があり、次のルールがあります:

その主な実装メソッドは $xxx です。xxx は Python の命名規則を満たす文字列です。つまり、数字で始めることやキーワードなどにすることはできません。

$xxx が他の文字列と接触する必要がある場合は、{} を使用して xxx をラップできます (以前は '()' が使用されていたようです。私の参考書の 1 つにはこれが記載されていましたが、現在のバージョンではそうすべきです'{}' のみを使用してください)。例: aaa${xxx}aaa

テンプレートには、substitute とsafe_substitute という 2 つの重要なメソッドがあります。

どちらのメソッドもパラメータを取得することで文字列を返すことができます

>>s=Template(There $a and $b)
>>print s.subtitute(a='apple',b='banana')
There apple and banana
>>print s.safe_substitute(a='apple',b='banbana')
There apple and banbana


次のように、辞書を取得してデータを直接渡すこともできます

>>s=Template(There $a and $b)
>>d={'a':'apple','b':'banbana'}
>>print s.substitute(d)
There apple and banbana

これらの違いは、欠落しているパラメーターを処理する方法にあります。

テンプレートは、最初にテンプレートを通じて文字列を初期化することによって実装されます。これらの文字列にはキーが 1 つずつ含まれています。置換または安全なサブサイトを呼び出すことにより、キーの値がメソッドで渡されたパラメータと照合され、指定された場所に文字列がインポートされます。この方法の利点の 1 つは、キーが正しい限り、「%s」などを出力する必要がなく、値を正しく挿入できることです。こうすることで、大量のデータを挿入するときに安心できます。しかし、そのような怠惰な方法があったとしても、入力されたキーが 1 つ少ない場合はどうなるでしょうか。

置換は、キーが入力されていない場合、確実にエラーが報告される深刻な方法です。見栄えは悪くなりますが、問題点は見つかります。

safe_substitute はエラーを報告しませんが、

などの結果文字列に $xxx を直接入力します。
there apple and $b

この利点は、プログラムが常に正しく、次から次へとエラーに圧倒される必要がないことです。

テンプレートは継承でき、そのサブクラスはいくつかの「パーソナライズされた」操作を実行できます...

区切り文字フィールドを変更すると、$ 文字を「#」などの他の文字に変更できますが、新しい識別子は正規表現の仕様に準拠する必要があります。

idpattern を変更することでキーの命名規則を変更できます。たとえば、最初の文字は a で始まることが規定されており、これは命名を標準化するのに非常に適しています。もちろん、これは通常の表現によっても実現されます。

from string import Template
class MyTemplate(Template):
  delimiter = "#"
  idpattern = "[a][_a-z0-9]*"
def test():
  s='#aa is not #ab'
  t=MyTemplate(s)
  d={'aa':'apple','ab':'banbana'}
  print t.substitute(d)
if __name__=='__main__':
  test()

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。