Python
の format()
メソッドは、文字列を効率的に整形するための非常に強力なツールです。変数や数値を文字列に挿入したり、特定の形式にフォーマットする際に活用できます。この記事では、format()
メソッドの基本的な使い方から、数値や文字列のフォーマット、複雑な書式指定方法、さらには f-strings
との違いについても詳しく解説します。
format()メソッドとは?
format()
メソッドは、Python
で 文字列を整形 するための機能です。文字列内の特定の場所に変数や数値を挿入し、指定した書式で表示できます。format()
を使うことで、可読性の高いコードで動的な文字列生成が可能になります。
基本的な構文
"文字列{}.format(値)"
この構文では、{}
の中に値が挿入され、format()
メソッドに渡された引数が順番に埋め込まれます。
基本的な使用例
次に、簡単な format()
の使用例を見てみましょう。
name = "Alice"
age = 30
text = "名前は{}で、年齢は{}歳です。".format(name, age)
print(text)
出力:
名前はAliceで、年齢は30歳です。
この例では、{}
に name
と age
が挿入され、整形された文字列が生成されます。
フォーマット位置の指定
format()
を使うと、引数の挿入順序を明示的に指定することができます。たとえば、引数の順番を逆にしたり、同じ値を複数箇所に挿入することも可能です。
引数の位置指定
text = "名前は{1}で、年齢は{0}歳です。".format(age, name)
print(text)
出力:
名前はAliceで、年齢は30歳です。
この例では、{1}
が name
に、{0}
が age
に対応しており、引数の順序をカスタマイズしています。
キーワード引数の使用
format()
は、キーワード引数を使って値を渡すこともできます。
text = "名前は{name}で、年齢は{age}歳です。".format(name="Alice", age=30)
print(text)
出力:
名前はAliceで、年齢は30歳です。
この方法を使うと、引数の順番に依存せず、変数名を指定して挿入できます。
数値のフォーマット
数値をフォーマットする場合、format()
はさまざまな書式指定が可能です。特に、 小数点以下の桁数 や パディング を指定する際に便利です。
小数点以下の桁数を指定
x = 3.14159
formatted_x = "{:.2f}".format(x) # 小数点以下2桁まで表示
print(formatted_x)
出力:
3.14
{:.2f}
のように指定すると、小数点以下2桁に丸められた数値が表示されます。この方法を使えば、数値を指定の桁数に整形して表示することができます。
数値のパディング(桁揃え)
数値を整形して表示する際に、桁を揃えて見やすくするためのパディングも行えます。
x = 42
formatted_x = "{:05d}".format(x) # 5桁になるように0で埋める
print(formatted_x)
出力:
00042
{:05d}
のように指定すると、数値が5桁になるまで左側に 0
が追加されます。同様に、空白や他の文字でパディングすることも可能です。
文字列のフォーマット
format()
は数値だけでなく、文字列の整形にも使えます。例えば、文字列の幅を揃えたり、右揃えや左揃えにすることができます。
文字列の右揃え
text = "{:>10}".format("Python") # 10文字分の幅で右揃え
print(text)
出力:
Python
{:>10}
のように指定することで、右揃えにして10文字分のスペースを確保できます。
文字列の左揃え
text = "{:<10}".format("Python") # 10文字分の幅で左揃え
print(text)
出力:
Python
同様に、{:<10}
のように指定すると、左揃えになります。
複雑な書式指定
format()
はさらに複雑なフォーマットもサポートしています。たとえば、数値をパーセンテージで表示したり、指数表記を使うことができます。
パーセンテージ表示
x = 0.85
formatted_x = "{:.1%}".format(x) # パーセンテージで表示
print(formatted_x)
出力:
85.0%
指数表記
x = 123456789
formatted_x = "{:.2e}".format(x) # 指数表記で表示
print(formatted_x)
出力:
1.23e+08
{:.2e}
のように指定すると、数値を指数表記で整形できます。
f-stringsとの比較
Python 3.6
以降では、f-strings
(フォーマット済み文字列リテラル)が導入され、format()
の代わりに使われることが増えています。f-strings
はより簡潔で可読性が高く、パフォーマンスも向上しています。
f-stringsの基本例
name = "Alice"
age = 30
text = f"名前は{name}で、年齢は{age}歳です。"
print(text)
出力:
名前はAliceで、年齢は30歳です。
f-stringsとformat()の違い
f-strings
は直接文字列中に変数を埋め込めるため、format()
よりもコードが短くなることが多いです。また、実行速度も速い傾向があります。しかし、format()
は Python 2.7
でも使えるため、互換性を重視する場合は format()
を選ぶことがあります。
まとめ
Python
の format()
メソッドは、柔軟で強力な文字列整形ツールです。基本的な使い方から、数値や文字列のフォーマット、さらに複雑な書式指定まで、幅広い用途に対応しています。f-strings
と比較しても、format()
は依然として有用で、特に Python 2
との互換性を求める場合に便利です。目的に応じてこれらのフォーマット方法を使い分け、コードをさらに効率的に整形してみてください。