テンプレートは間違いなく優れたもので、文字列の形式を修正して再利用できます。同時に、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()