【Python】format()メソッドの基本|具体例付きで解説

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2023年6月)

✔この記事は特に以下の方に適した内容です。

「Python .formatって何ができるんだろう?」

「formatメソッドの書き方を学びたい」

「Python .formatを使った具体例が知りたい」

✔この記事で学べること

  • Python formatメソッドの基本
  • .formatの書き方と応用方法
  • format()メソッドのの実践例

当記事は、python .formaの基礎から応用まで、理解しやすい具体例を用いながらわかりやすく説明しています。

ぜひ最後までご覧ください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間17万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

Pythonの.format()メソッドとは

こちらでは、Pythonの.format()メソッドについてお伝えします。

.format()メソッドは、文字列の中に変数の値を埋め込める非常に便利な機能です。

その特性と利点を理解することで、あなたのPythonコーディングはさらに効率的かつ簡潔になります。

  • フォーマットの必要性
  • 2つの主要なフォーマット方法

フォーマットの必要性

Pythonのい.format()メソッドは、さまざまなデータ型に対応し、複雑な文字列も容易に作成できる構文です。

通常で使われる+演算子や%演算子では、複雑な文字列の作成や、異なるデータ型の取り扱いが難しい場合があります。

例えば以下のようなケースです。

  • 文字列内に浮動小数点数を3桁ごとのカンマ区切りで表示したい
  • 左寄せ、右寄せ、中央寄せといった文字列の配置を指定したい

.format()メソッドを使用するとスマートに対応できます。

# 文字列内に浮動小数点数を3桁ごとのカンマ区切りで表示する例
num = 1234567.89
formatted_str = "Number: {:,.2f}".format(num)
print(formatted_str)  # 出力: Number: 1,234,567.89

# 文字列の配置を指定する例
name = "Alice"
age = 30
formatted_str = "Name: {:<10} Age: {:>5}".format(name, age)
print(formatted_str)  # 出力: Name: Alice      Age:    30

# 複数のデータ型を組み合わせた例
name = "Bob"
score = 95.5
formatted_str = "Name: {:<10} Score: {:.1f}".format(name, score)
print(formatted_str)  # 出力: Name: Bob        Score: 95.5

2つの主要なフォーマット方法

Pythonの文字列フォーマットには、以下2つの主要な方法が存在します。

  • .format()メソッド:Python2.6以降で利用でき、値の埋め込み位置を細かく制御したい場合に威力を発揮
  • f文字列(フォーマット済み文字列リテラル):Python3.6以降で利用でき、文字列内に直接変数名を記述できるため、簡潔なコードが書ける

それぞれに特性があり、目的に応じて使い分けましょう。

当記事では、より細かい制御が可能な.format()メソッドに焦点を当て、その使い方と応用例を深掘りしていきます。

.format()メソッドの基本的な使い方

次に、.format()メソッドの基本的な使い方について詳しく見ていきます。

このメソッドの基本的な構文や使用方法をマスターすることで、より高度な文字列操作が可能になります。

  • 書き方
  • 基本的な使い方
  • 複数の変数を指定する方法

書き方

.format()メソッドは、文字列に対して使用します。

“文字列”.format(値)

文字列内に{}と記述することで、そこに指定した値が埋め込まれます。

具体的なコードは次のようになります。

s = "Hello, {}!".format("world")
print(s)  # 出力:Hello, world!

"world"という文字列が{}の位置に埋め込まれ、結果として"Hello, world!"という文字列が得られます。

基本的な使い方

.format()メソッドは、文字列の中に変数の値を埋め込むためのもので、文字列内の{}の部分が.format()メソッドの引数に置き換えられます。

例えば、以下のようなコードがあります。

name = "しょうへい"
age = 28
s = "私の名前は{}です。{}歳です。".format(name, age)
print(s)  # 出力:私の名前はしょうへいです。28歳です。

この例では、{}の部分が順にnameageの値に置き換えられます。

複数の変数を指定する方法

.format()メソッドでは、複数の引数を取ることも可能です。

その際、文字列中の{}は左から順に引数の値で置き換えられます

また、{}内にインデックスを指定することで、引数の値を指定の位置に挿入することも可能です。

以下に示す例を見てみましょう。

name = "しょうへい"
age = 28
s = "私の名前は{0}です。{1}歳です。そうです、{0}と言います。".format(name, age)
print(s)  # 出力:私の名前はしょうへいです。28歳です。そうです、しょうへいと言います。

置換フィールドの指定方法

ここでは、.format()メソッドにおける置換フィールドの指定方法を詳しく見ていきます。

置換フィールドを指定することで、さまざまな状況に対応した文字列操作が可能です。

  • 数値での指定
  • キーワードでの指定

数値での指定

数値で置換フィールドを指定することで、引数の順序に応じて文字列中の特定の位置に値を挿入できます。

これは特に、同じ引数を複数の場所で使用する際に便利です。

次のコードはその例です。

s = "私の名前は{0}です。{1}歳です。そうです、{0}と言います。".format("しょうへい", 28)
print(s)  # 出力:私の名前はしょうへいです。28歳です。そうです、しょうへいと言います。

キーワードでの指定

.format()メソッドの引数をキーワード引数として指定することで、置換フィールドに特定のキーワードを割り当てることが可能です。

これにより、引数の順番に依存しないより直感的な文字列の操作が可能となります。

s = "私の名前は{name}です。{age}歳です。".format(name="しょうへい", age=28)
print(s)  # 出力:私の名前はしょうへいです。28歳です。

このようにキーワードで指定する方法は、コードを読んだだけで、どの部分がどの値に置き換えられるのかが一目でわかるため、可読性が高まります。

.format()メソッドで使える書式指定子

ここでは、.format()メソッドにおける書式指定子の詳細について見ていきましょう。

書式指定子を使うことで、出力する文字列の見た目を自由自在に制御できます。

  • 値の表現型
  • 最小フィールド幅
  • 埋める文字と配置方法
  • 符号
  • 数値の区切り文字
  • 小数部分の精度
  • 別形式

値の表現型

.format()メソッドの書式指定子を用いると、挿入する値の表現型を指定することが可能です。

例えば、整数を10進数、16進数、8進数、2進数で表示できます。

それぞれdxobを使用しましょう。

print("{0:d}, {0:x}, {0:o}, {0:b}".format(10))  # 出力:10, a, 12, 1010

ここで、{0:d}{0:x}{0:o}{0:b}はそれぞれ10、a、12、1010に置き換えられます。

最小フィールド幅

最小フィールド幅は、文字列が占める最小の文字数を指定できます。

これは特に、複数の文字列を揃えて表示する必要があるときに便利です。

print("{0:5}, {1:5}".format("Alice", "Bob"))  # 出力:"Alice, Bob  "

最小フィールド幅が5に設定されているため、”Bob”の後ろには2つのスペースが追加されます。

埋める文字と配置方法

format()メソッドでは、文字列の左右、中央に空白や任意の文字を挿入できます。

結果として、文字列の左、右、中央に文字を配置することが可能なのです。

これは、文字列の表示を整えたいときなどに便利といえます。

print("{0:<10}".format("left"))    # 出力:"left      "
print("{0:>10}".format("right"))   # 出力:"     right"
print("{0:^10}".format("center"))  # 出力:"  center  "
print("{0:*^10}".format("star"))   # 出力:"***star***"

この例では、最初の3つは左揃え、右揃え、中央揃えを示しています。

最後の例は、*を埋め文字として使用しています。

符号

format()メソッドでは、符号を表示する方法を制御できます。

  • +オプション:正の数にも符号を表示
  • -オプション:負の数だけに符号を表示

さらに、空白オプションを使用すると、正の数の前に空白を入れます。

print("{0:+}, {1:+}".format(5, -5))  # 出力:"+5, -5"
print("{0:-}, {1:-}".format(5, -5))  # 出力:"5, -5"
print("{0: }, {1: }".format(5, -5))  # 出力:" 5, -5"

この例では、最初の行では+オプションを、次の行では-オプションを、最後の行では空白オプションを使用しています。

数値の区切り文字

大きな数を読みやすくするためには、3桁ごとにカンマを入れると便利です。

これもformat()メソッドで簡単におこなえます。

print("{0:,}".format(1000000))  # 出力:"1,000,000"

この例では、1000000を1,000,000と表示しています。

小数部分の精度

format()メソッドを使用すれば、表示する小数点以下の桁数を指定することも可能です。

科学的な計算結果を表示するときや、金額を表示するときなどに使えます。

print("{0:.2f}".format(3.14159))  # 出力:"3.14"

上記の例では、3.141593.14と表示されています。

.2fの部分で、小数点以下2桁までを表示しているのです。

別形式:10進数以外を指定

format()メソッドは、10進数以外の形式にも対応可能です。

例えば、bを指定すれば2進数、oを指定すれば8進数、xXを指定すれば16進数を表示できます。

print("{0:b}, {0:o}, {0:x}, {0:X}".format(15))  # 出力:"1111, 17, f, F"

数値15を2進数、8進数、16進数(小文字・大文字)で表示しています。

.format()メソッドを使いこなす6つの応用例

こちらでは、.format()メソッドを使った応用例についてお伝えします。

.format()メソッドを理解し、適用することで以下のような操作が可能です。

  • 桁区切りの追加
  • 小数点以下の桁数指定
  • パーセント表示
  • 表示位置の変更
  • ゼロ埋めで桁数を揃える
  • 文字列にリストを表示

桁区切りの追加

桁区切りは、大きな数値を見やすくするためによく使用されます。

,を書式指定子に追加し、3桁ごとにカンマを挿入しましょう。

print("{:,}".format(1234567890))  # 出力:"1,234,567,890"

数値12345678901,234,567,890という形で表示されています。

小数点以下の桁数指定

既に小数部分の精度を調整する例を見ましたが、さらに具体的な使い方を見てみましょう。

例えば、小数第二位まで表示し、かつ、桁区切りを行いたい場合は以下のように記述します。

print("{:,.2f}".format(1234567.890))  # 出力:"1,234,567.89"

この例では、数値1234567.8901,234,567.89という形で表示されています。

パーセント表示

format()メソッドを使用すれば、数値をパーセント表示にすることも可能。

とくにに科学的な計算結果を表示するときや、比率を表現するときなどに便利です。

print("{:.2%}".format(0.12345))  # 出力:"12.35%"

0.1234512.35%と表示されています。

.2%の部分で、小数点以下2桁までを表示することを指示しているのです。

表示位置の変更

format()メソッドでは、出力の位置を左寄せ、中央寄せ、右寄せといった方法で調整することが可能です。

それぞれの場合について、最小フィールド幅を10として例示します。

print("{:<10}".format("abc"))  # 左寄せ出力:"abc       "
print("{:^10}".format("abc"))  # 中央寄せ出力:"   abc    "
print("{:>10}".format("abc"))  # 右寄せ出力:"       abc"

このように、<は左寄せ、^は中央寄せ、>は右寄せを意味します。

これらを使って、テキストや数値の表示位置を自由に調整できます。

ゼロ埋めで桁数を揃える

数値の前に余分なスペースがあると見栄えが悪い、または、全ての数値を同じ桁数に揃えたい場合にはゼロ埋めが便利です。

ゼロ埋めは0を使って行います。

print("{:0>5}".format(123))  # 出力:"00123"
print("{:0>5}".format(12345))  # 出力:"12345"

上記の例では、5桁未満の数値は前に0が補完され、全ての数値が5桁で表示されています。

数値の比較などで非常に役立つでしょう。

文字列にリストを表示

リスト内のアイテムをフォーマットするために、.format()メソッドを使用することも可能。

リストをそのまま表示させるのではなく、特定のフォーマットを適用したい場合に便利です。

list_data = [1, 2, 3, 4, 5]
print("List: {}".format(', '.join(str(i) for i in list_data)))

出力結果は、List: 1, 2, 3, 4, 5です。

.format()メソッドを使うことで、リストデータを文字列として整形して表示できます。

まとめ

当記事では、Pythonの.format()メソッドの基本的な使い方と活用法について学習してきました。

format()メソッドは、テキストや数値の出力を美しく、かつ便利にするためのさまざまな機能を持っています。

また、具体的な応用例を見ることで、.format()メソッドがどのように使えるかを理解し、自分のコードに適用できるようになったことでしょう。

これらの知識を活かして、Pythonでのプログラミングをより円滑に、かつ効果的におこなってください。

タイトルとURLをコピーしました