書籍「Pythonチュートリアル 第3版 11.2 テンプレート」要約サンプルプログラム
書籍「Pythonチュートリアル 第3版 11.2 テンプレート」を読んで、要点を注釈付きのサンプルプログラムとしてまとめました。
なお、テンプレート(文字列)の主な使い道は国際化のようです。
「Pythonチュートリアル 第3版 11.2 テンプレート」を読んでいない人は⬇️を参考にしてください。そして、その後でサンプルプログラムを見てください。サンプルプログラムの意味が分かると思います。
サンプルプログラム① 基本形
# サンプルプログラム① 基本型
from string import Template
s1 = Template('氏:$si 名:$mei') # プレースホルダをスペースで区切った例
p = s1.substitute(si='山田', mei='太郎') # テンプレート置換 キーワード引数例
print(p)
d = dict(si='鈴木', mei='花子') # 辞書を作成
s2 = Template('氏:${si} 名:${mei}') # プレースホルダを{}で囲んだ例
p = s2.substitute(d) # テンプレート置換 辞書引数例
print(p)
'''
実行結果
氏:山田 名:太郎
氏:鈴木 名:花子
'''
サンプルプログラム②-① substitute 使用エラー例
# サンプルプログラム②-① substitute 使用エラー例
from string import Template
s = Template('氏:$si 名:$mei')
p = s.substitute(si='山田', ei='太郎') # わざと mei を ei と間違える
print(p)
'''
実行結果 (エラー)
Traceback (most recent call last):
File "21.py", line 6, in <module>
p = s.substitute(si='山田', ei='太郎') # わざと mei を ei と間違える
File "/usr/lib/python3.7/string.py", line 132, in substitute
return self.pattern.sub(convert, self.template)
File "/usr/lib/python3.7/string.py", line 125, in convert
return str(mapping[named])
KeyError: 'mei'
'''
サンプルプログラム②-② safe_substitute 使用エラー回避例
# サンプルプログラム②-② safe_substitute 使用エラー回避例
from string import Template
s = Template('氏:$si 名:$mei')
p = s.safe_substitute(si='山田', ei='太郎') # わざと mei を ei と間違えてもエラーにならない!
print(p)
'''
実行結果 ($meiがそのまま出力される)
氏:山田 名:$mei
'''
サンプルプログラム③ Templateをサブクラス化してプレースホルダの開始文字を変更する例
# サンプルプログラム③ Templateをサブクラス化してプレースホルダの開始文字を変更する例
from string import Template
class C(Template): # Template サブクラス化
delimiter = '%' # プレースホルダの開始文字を % に変更
s = C('氏:%si 名:%mei') # プレースホルダの開始文字に % を指定
p = s.substitute(si='佐藤', mei='徹')
print(p)
'''
実行結果
氏:佐藤 名:徹
'''
あとがき
Pythonチュートリアル 第4版が出ている事に、今日気が付きました💦。
第3版のここまでしか読んでいませんが、とりあえず今日注文しました (^_^;)
#Pythonチュートリアル
#Pythonチュートリアル第3版
#テンプレート
#テンプレート文字列
#Template
#substitute
#safe_substitute
#Chromebook 上の #Linux で #Python #Python3 #プログラミング を勉強中 !