【Python】formatメソッドを活用した記述をマスターする

今回はformatメソッドについて紹介します。Pythonで文字列を結合するときに使うのがformatメソッドです。

formatメソッドを使わなくても文字列結合はできますが、使用することで可読性の向上が見込めます。

そこで今回は、formatメソッドの使い方をまとめていきたいと思います。細かいところは無視して、formatメソッドが使えるようになることを本記事の目標にしようと思います。

ちなみ、formatメソッドを使わなければ可読性が低いということではないので、好みに合わせて使うことをお勧めします^^

Pythonで文字列を結合する手段

Pythonで文字列を結合する方法はいくつかあります。

以下に例を示しますが、どれも同じ結果が得られます。

name = "Allen"

# +で文字列結合(連結演算子)
ans1 = "彼の名前は" + name + "です"
print("ans1: "+ans1)

# formatメソッド
ans2 = "彼の名前は{}です".format(name)
print("ans2: "+ans2)

# %構文
ans3 = "彼の名前は%sです" %name
print("ans3: "+ans3)
#Output
ans1: 彼の名前はAllenです
ans2: 彼の名前はAllenです
ans3: 彼の名前はAllenです

上記な例は結合した文自体が短く、どの方法でもわかりやすいかと思います。複数の変数を結合するような場面になれば、上記の方法の好みが分かれてくるのではないでしょうか。

username = "Allen"
password = "Allenpass"
host     = "localhost"
port     = "123"

url1 = "http://" + username + ":" + password + "@" + host + ":" + port 
url2 = "http://{}:{}@{}:{}".format(username, password, host, port)

print("url1: "+url1)
print("url2: "+url2)
#Output
url1: http://Allen:Allenpass@localhost:123
url2: http://Allen:Allenpass@localhost:123

どちらの方が見やすいですか?個人的には、url2(formatメソッド)の方が見やすさはもちろん、コーディングが楽に感じます。

開発者目線で見ても、formartメソッドを使うメリットはあると思います。

基本構文

上記の例でだいたいおわかりかと思いますが、文字列に{ }(置換フィールド)を置き、文字列の後ろに.format()で置換フィールドに代入する文字列を指定します。

username = "Allen"
password = "Allenpass"
host     = "localhost"
port     = "123"

url2 = "http://{}:{}@{}:{}".format(username, password, host, port)
#Output
url2: http://Allen:Allenpass@localhost:123

キーワードでの指定

.format()の内部で変数に値を格納することもできます。その際は、置換フィールドに変数名を与えます。

url3 = "http://{username}:{password}@{host}:{port}".format(username="Allen", password="Allenpass", host="localhost", port="123")

print("url3: "+url3)
#Output
url3: http://Allen:Allenpass@localhost:123

この方法では、.format()内部の値の順番を気にする必要がなくなります

数値での指定

置換フィールドに数値を指定することで、.format()の内部の値をその順番で置換フィールドに格納することができます。

url4 = "http://{0}:{1}@{2}:{3}".format(username, password, host, port)
#Output
url4: http://Allen:Allenpass@localhost:123

指定する順番は好きに入れ替えることができます。

url4 = "http://{3}:{2}@{1}:{0}".format(username, password, host, port)
#Output
url4: http://123:localhost@Allenpass:Allen

f文字列

Python3.6以降は、さらに便利なf文字列なるものが追加実装されています。

文字列の前に” f “を加えることで、.format()なしに変数の指定ができるようになります

username = "Allen"
password = "Allenpass"
host     = "localhost"
port     = "123"


url5 = f"http://{username}:{password}@{host}:{port}"
print("url5: "+url5)
#Output
url5: http://Allen:Allenpass@localhost:123

相当シンプルな記述ができるようになりました。

Python3.6以降のバージョンで開発する際は、この方法が一番便利かもしれません。

まとめ

formatメソッドの使い方の基本をまとめてきました。

文字列結合の方法は1つではないので、使いやすいものや可読性が高いと思う方法を採用するのがベストだと思います。

仮に使わないにせよ、formatメソッドの基本構文を知っておくことで、他の人が書いたコードを読む際に役立つかもしれません^^

知識の引き出しを1つ増やすことができたなら幸いです。

ではでは👋