Python:Template使用マニュアル

4753 ワード

17年7月第5編ログは7月に終わり、8月はもうすぐ始まります.最近、人工知能の勢いはますます越えてきたが、この波の下で誰が残って、誰が着実に新しい成果を出すことができるのか、すべては分からない.今週持ってきたブログは主にTemplateの使用を説明しています.このブログはpython 3に基づいて書かれています.最近微信のプロジェクトで採用されている言語はpython 3なので、次は本題に入ります.Templateは間違いなく良いもので、文字列のフォーマットを固定することができ、Templateはstringのクラスに属しているので、使用するには以下の方法で呼び出すことができます.
from string import Template

templateには特殊な識別子があり、その使用には以下のルールがある:その主な実現方式はxxxであり、xxxはpython命名規則を満たす文字列であり、すなわち数字で始まることができず、キーワードにすることができないなど、xxxが他の文字列と接触する必要がある場合、xxxを包むことができる.例えば、aaa{xxx}aaa
from string import Template


s=Template("There $a and ${b}s")
print (s.substitute(a='apple',b='banana'))

print (s.safe_substitute(a='apple',b='banbana'))

実行結果:
PycharmProjects/untitled/reply.py
There apple and bananas
There apple and banbanas

Process finished with exit code 0

Templateは、辞書を使用してデータを直接転送することもできます.
from string import Template


s=Template("There $a and ${b}s")


d={'a':'apple','b':'banbana'}
print(s.substitute(d))

実行結果:
from string import Template


s=Template("There $a and ${b}s")


d={'a':'apple','b':'banbana'}
print(s.substitute(d))

Templateの実装は、まずTemplateによって文字列を初期化することである.これらの文字列にはkeyが含まれています.substituteまたはsafe_を呼び出すsubsitituteは、key値をメソッドに渡されたパラメータに対応させ、指定された位置に文字列をインポートします.この方式の1つの利点はprint'%s'のような方式ではなく,keyが正しい限り値が正しく挿入される各パラメータの順序が固定されなければならないことである.substituteは厳粛な方法で、keyが入力されていない場合は、必ずエラーを報告します.見苦しいですが、問題を見つけることができます.safe_substituteはエラーを報告するのではなく、$xxxを結果文字列に直接入力します.例:
from string import Template


s=Template("There $a and ${b}s")


d={'a':'apple'}
#print(s.substitute(d))
print(s.safe_substitute(d))

結果:
PycharmProjects/untitled/reply.py
There apple and ${b}s

Process finished with exit code 0

safeを通してsubstituteはあなたのプログラムがいつも正しいことを保証します.また、Templateでは書き換えを継承することで、いくつかの個性的な修正を行うこともできます.delimiterフィールドを変更すると、$文字を「#」などの他の文字に変更できますが、新しいマーカーは正規表現の仕様に合致する必要があります.idpatternを変更することでkeyのネーミングルールを変更することができます.例えば、最初の文字の先頭が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()

以上はTemplateについての詳しい説明で、皆さんに助けをもたらすことを望んで、上の内容は、すべてコードの実際の検証を通じて、正確で間違いがないことを保証することができます.