Pythonは初心者にも分かりやすくノンプログラマーの身としてはとてもありがたい言語なのですが、変数と文字列を組み合わせる方法については、Perlなどの方が便利かなあと感じることが多々あります。自分のコードを見返しても、使っている方法が結構ばらばらで、整理できていないようだったので、ここで一度まとめてみようと思いました。
1. +演算子を使う方法
基本ですね。初心者の自分には一番分かりやすかったです。
>>> favorite = "青い花" >>> print(favorite + "が好きです") 青い花が好きです
・メリット
基本の+演算子を使って、変数を組み合わせることができるので新しく覚えることがなく楽。
・デメリット
変数を文章の途中に埋め込むと、式が長く完成形が分かりにくい。
>>> place = "庭" >>> chicken = "ニワトリ" >>> num = "二羽" >>> print(place + "には" + num + chicken + "がいる") 庭には二羽ニワトリがいる
・まとめ
既存の文字列の先頭または後ろに、変数を追加したい場合は、意図が分かりやすくて良いです。
>>> output = "2018-01-01/" >>> print("今回の出力ディレクトリは./analysis/" + output) 今回の出力ディレクトリは./analysis/2018-01-01/
2. formatメソッドを利用する方法
もっぱらこれを使っています。これも基本ですね。文字列のメソッドを呼び出すという点が初心者には少し分かりにくかったです。
>>> favorite = "青い花" >>> print("{0}が好きです".format(favorite)) 青い花が好きです
・メリット
公式で推奨されているフシがある。ゼロ埋め、小数点の桁指定など細かな設定ができる。文字列途中での変数埋め込みも楽。
・デメリット
一行が長くなりやすく。79文字ルールを違反しやすい。変数名そのものに付けた情報が伝わりにくい。
・まとめ
数値を埋め込むときに真価を発揮する気がします。
>>> index = 7 >>> num = 5 >>> print("ナンバー{0:05d}さんが本を{1}冊借りました。".format(index, num) ナンバー00007さんが本を5冊借りました。
3. %演算子を利用する方法
Perlでもおなじみですね。一時期は使ってました。
>>> favorite = "青い花" >>> print("%sが好きです" % favorite) 青い花が好きです
・メリット
Pythonに限らない表現形式である。細かな設定も指定できる。
・デメリット
公式が推奨していないフシがある。どこまでが文字列でどこからが変数指定なのかが個人的に理解しにくい。
・まとめ
formatと%演算子のどちらを使うかは、好みの問題かなあと思います。
4. f文字列を利用する方法
Python 3.6から追加された方法。便利らしいのですが、ロクに使っていないのでよく分からないです。
>>> favorite = "青い花" >>> print(f"{favorite}が好きです。") 青い花が好きです
・メリット
変数名の情報を文字列に埋め込める。コンパクトに表現できる。細かな設定も指定可能。
・デメリット
バージョン3.6以降でないと対応していない。
・まとめ
やっぱり追加された機能だけあってバージョンを気にしなくて良いならこれが一番良い気がしますね。Perlの変数展開に使用感も近そうですし。調べるのが面倒で敬遠していましたが、これを機に勉強しようと思います。