% による文字列のフォーマット出力を書くことが多いが、
string の Templateクラスの機能も
忘れてはならない。
テンプレートは、$文字接頭辞
from string import Template t = Template('$a is $b : $c')
substitute( テンプレートの対象名=値 、、、)
from string import Template s = t.substitute(a='Apple', b=True, c=datetime.now()) print(s) # Apple is True : 2020-12-15 20:02:05.479734
substitute に、dict を渡して実行
data = { 'a': 'Banana', 'b': 180, 'c': True } s = t.substitute(data) print(s) # Banana is 180 : True
もちろん、t.substitute(**data) と書いても結果は同じ
テンプレートに対して値が不足する時
data = { 'a': 'Lemon', 'b': 90 } s = t.substitute(data)
string.py で、KeyError が発生する。
return str(mapping[named]) KeyError: 'c'
テンプレートなので、以下のように同じ置き換え対象が2個以上あっても良い。
t = Template('$a is $b : $a')
これは、string.format() 関数で以下と同じです。
s = "{0} is {1} ; {0}".format('a','b','c')
↑
'c’が対象にならずに、結果、
a is b ; a
になります