見出し画像

書籍「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 #プログラミング を勉強中 !