Python 文字列のフォーマット
プログラムを書いていると、文字列をフォーマットして出力したいことがよくあると思います。
ここでは Python の文字列をフォーマットする方法についてご説明します。
format() メソッドで文字列をフォーマットする
Python の文字列の中に変数の値など入れて出力したい時には、format() メソッドが使えます。
文字列の中で、値を入れたい場所に波括弧{}を挿入しておいて、format の引数にその波括弧に入れたい値を渡します。
では、format() メソッドを使ってみましょう。
name = "Sakura"
age = 20
message = "My name is {}. I'm {} years old."
print(message.format(name, age))
実行結果は次のようになります。ひとつめの波括弧の位置に name が、ふたつめの波括弧に age が順番に入っていますね。
My name is Sakura. I'm 20 years old.
波括弧の中に、引数のインデックスを指定して、引数として渡した値の表示場所を指定することも可能です。
name = "Sakura"
age = 20
message = "My name is {1}. I'm {0} years old."
print(message.format(age, name))
format に渡す引数の順番が入れ替わっていますが、波括弧で引数のインデックスを指定しているので、実行結果は先ほどと同じになっています。
My name is Sakura. I'm 20 years old.
format メソッドを使う文字列の中で、波括弧を文字として使いたい時は、{{ や }} のように二重にすると、プレースフォルダではなく文字だと認識されます。
例えば、名前を波括弧でかこみたい場合は次のようにします。
name = "Sakura"
age = 20
message = "My name is {{{1}}}. I'm {0} years old."
print(message.format(age, name))
実行結果は次のようになります。{{{1}}} の最初の {{ は { の文字、{1} はプレイスフォルダ、}} は } の文字と認識されていますね。
My name is {Sakura}. I'm 20 years old.
f 文字列を使って文字列をフォーマットする
Python 3.6 以降では、f 文字列(フォーマット済み文字列リテラル)を使って、format()メソッドを使うよりもシンプルに同じことができるようになりました。
文字列の最初のクォーテーションの前に f をつけて、波括弧 {} の中に変数名を直接入れます。
例えば、format() メソッドのサンプルコードを f 文字列を使って書き直すと次のようになります。
name = "Sakura"
age = 20
message = f"My name is {name}. I'm {age} years old."
print(message)
実行結果は同じです。
My name is Sakura. I'm 20 years old.
f 文字列の中で、波括弧を文字として使いたい時は、{{ や }} のように二重する点も format() メソッドと同じです。
どちらを使っても良いと思いますが、f 文字列のほうがシンプルで感覚的にもわかりやすいですね。
文字列のフォーマット時に書式指定する
f 文字列や format() メソッドを使ってフォーマットする時にただ表示するだけではなく、書式指定をして数字などをフォーマットすることができます。
例えば、数字を小数点第二位までになるように四捨五入して表示したいのであれば、波括弧の中で :.2f のように指定します。
number = 12345.6789
print(f"number = {number:.2f}")
print("number = {:.2f}".format(number))
実行結果は次のようになり、小数点第二位で四捨五入されていますね。
number = 12345.68
number = 12345.68
使いそうな書式指定の例をあげておきます。
書式指定 | フォーマット内容 | 例 |
---|---|---|
:.0f | 小数点以下を四捨五入 | 123.456 123 |
:.2f | 小数点第二位になるように四捨五入 | 123.456 123.46 |
:, | 3桁ごとにカンマを入れる | 12345 12,345 |
:.0% | 100をかけて % をつける(小数点以下なし) | 0.554 55% |
:.2% | 100をかけて % をつける(小数点第二位) | 0.554 55.40% |
:6d | 6桁で数字を右に寄せて左にスペースを入れる | 12 12 |
:06d | 6桁で数字を右に寄せて左をゼロ埋め | 12 000012 |
:0<6d | 6桁で数字を左に寄せて右をゼロ埋め | 12 120000 |
:x^6d | 6桁で数字を中央に寄せて左右をx埋め | 12 xx12xx |
:x<6s | 6桁で文字を左に寄せて右をx埋め | AA AAxxxx |
:>6s | 6桁で文字を右に寄せる | AA AA |
以上、Python の文字列をフォーマットする方法についてご説明しました。