How to make datas our friends

「エンジニアは発信していくことが責務である」という言葉に感化されて始めた勉強したことを書き留めていく備忘録的なやつ。

Pythonでテンプレートによる文生成をおこなう関数を作成する

背景

言語処理100本ノック 2015を今やっているのでその備忘録的なやつ。

やりたいこと

引数x, y, zを受け取り「x時のyはz」という文字列を返す関数を実装する。
さらに、x=12, y="気温", z=22.4として、実行結果を確認。

結果

Python3.6から新しく導入されたf-string関数を使用して作成してみました。

def getTemplate(x, y, z) :
    result = f'{x}時の{y}は{z}'
    return result
    
str = getTemplate(12, '気温', 22.4)

# 実行結果
> str
> '12時の気温は22.4'

解説/考察

今まで文字列への変数組み込みは%演算子でおこなっていたのですが、今回はf-string関数なるものが登場したと教えてもらったのでそれを利用しました。
初めて使いましたが、これは楽ちんでした!そしてスマート!

www.python.org

こんな感じで、文章内に直接変数名を入れることができるので可読性も申し分なし。

> age = 28
> f'I am {age} yo'
> 'I am 28 yo'

{}内で演算も可能です。

> age = 28
> f'I was {age-8} yo 8 years ago'
> 'I was 20 yo 8 years ago'

> import datetime
> birthday = datetime.date(1989, 2, 10)
> f'I was born in {birthday:%Y}'
> 'I was born in 1989'

Pythonには他にも文字列フォーマットに%演算子やstr.format()関数等があるのでそちらバージョンも一応作成しました。

# %演算子
def getTemplate(x, y, z) :
    result = '%s時の%sは%s' % (x, y, z)
    return result
str = getTemplate(12, '気温', 22.4)

#実行結果
> '12時の気温は22.4'
# str.format()
def getTemplate(x, y, z) :
    result = '{x}時の{y}は{z}'.format(x=x, y=y, z=z)
    return result
str = getTemplate(12, '気温', 22.4)

#実行結果
> '12時の気温は22.4'

やっぱり、f-staringが一番スマート