Python format()文字列を明確な例でマスター
Python String format()とは
Python String format()は、プレースホルダを含む文字列を有効な値で置換、代入、変換して最終的な文字列を生成する関数です。Python文字列クラスの組み込み関数で、フォーマット済み文字列を出力として返します。文字列内のプレースホルダは中括弧で定義されます。
例: 「Welcome to Guru99 {}」。format('value here')。
このチュートリアルでは以下を学びます:
- Python String format()とは
- Pythonでのformat()関数の構文
- string format()の仕組み
- 例: 空プレースホルダを文字列値で置換
- 例: 空プレースホルダを数値で置換
- 例: プレースホルダ内で変数やキーワード引数を使用
- 例: プレースホルダ内でインデックスや位置引数を使用
- プレースホルダ内でのフォーマット
- クラスでのformat()使用
- 辞書でのformat()使用
- 変数置換のパディング
Pythonでのformat()関数の構文
templatestring.format(val1, val2...)
パラメータ
val1, val2 … : 中括弧{}形式のプレースホルダを持つテンプレート文字列で置換が必要な値。プレースホルダは文字列、キー/値ペア、整数、浮動小数点数、文字など可能。
戻り値:
中括弧内のプレースホルダが有効な値で置換された最終文字列を返す。
プレースホルダ
テンプレート文字列のプレースホルダは中括弧で表現、例: {}。プレースホルダは空{}、または変数{name}、数値インデックス{0}, {1}などを持つ。
string format()の仕組み
Python String format()メソッドは、元の文字列のプレースホルダをスキャンします。プレースホルダは空の中括弧({})、位置引数(インデックス0,1など{0},{1})、キーワード引数(変数名{name},{age})の形式を取ります。空中括弧の場合、formatの値が順番に置換されます。位置引数の場合、インデックスは0から始まり、format内の値はカンマ区切りで、0番目の値がformat内の最初の値を指し、以下同様。キーワード引数の場合、プレースホルダ内の変数名に基づいて値が置換されるため、format内の値の順序は関係ありません。空、位置、キーワード/変数プレースホルダの使用例をいくつか示します。
例: 空プレースホルダを文字列値で置換
以下の例では、文字列に空中括弧({})があります。formatに与えられた値が中括弧内に置換されます。置換したい値は文字列です。
例:
Python文字列フォーマットで、中括弧({})を文字列値で置換したい。値はformat("Guru99")で与えられる。実行時、中括弧{}がGuru99で置換され、最終文字列はWelcome to Guru99 tutorialsになります。
print ("Welcome to {} tutorials".format("Guru99"))
出力:
Welcome to Guru99 tutorials
例: 空プレースホルダを数値で置換
以下の例では、元の文字列に数値を置換したい。中括弧({})を数値が必要な場所に追加。実行時、空中括弧({})が数値で置換されます。
例:
format()を使って文字列内に数値を挿入することもできます。例ではformat()内の数値99で空プレースホルダ{}を置換する方法を示します。
print ("Welcome to Guru{} Tutorials".format("99"))
出力:
Welcome to Guru99 Tutorials
例: プレースホルダ内で変数やキーワード引数を使用
以下の例のように、中括弧内で変数を使用することも可能です。変数はformat()内で定義されます。実行時、変数に割り当てられた値が元の文字列内で置換されます。
例:
中括弧内で変数を使用、例: {name} {num}。nameとnum変数の値はformat内、つまりformat(name="Guru", num="99")で利用可能。nameとnumに与えられた値が{name}と{num}内で置換されます。
print ("Welcome to {name}{num} Tutorials".format(name="Guru", num="99"))
出力:
Welcome to Guru99 Tutorials
例: プレースホルダ内でインデックスや位置引数を使用
値はインデックス0, 1, 2をプレースホルダ内で使用して置換できます。値はformat()から順番に取得されます。
例:
print ("Welcome to {0}{1} Tutorials".format("Guru","99"))
出力:
Welcome to Guru99 Tutorials
例: 文字列内で複数のプレースホルダを使用
この例では、複数の空プレースホルダを使用します。
例:
例で使用される文字列には複数の空プレースホルダがあり、各プレースホルダはformat()内の値を参照します。最初の値が最初のプレースホルダに置換され、以下同様。
print ("{} is {} new kind of {} experience!".format("Guru99", "totally","learning"))
出力:
Guru99 is totally new kind of learning experience!
プレースホルダ内でのフォーマット
プレースホルダが空、変数、インデックスの形式を取れることはわかりました。プレースホルダ内でPython文字列フォーマットを適用することも可能です。
フォーマットの一覧:
| フォーマット | 説明 | 例 |
|---|---|---|
:d |
プレースホルダ内で使用すると10進数形式で出力 | print("The binary to decimal value is : {:d}".format(0b0011))出力: The binary to decimal value is : 3 |
:b |
プレースホルダ内で使用すると2進数形式で出力 | print("The binary value is : {:b}".format(500))出力: The binary value is : 111110100 |
:e |
プレースホルダ内で使用すると指数形式で出力、出力の指数eは小文字 | print("The scientific value is : {:e}".format(40))出力: The scientific format value is : 4.000000e+01 |
:E |
プレースホルダ内で使用すると指数形式で出力、出力の指数Eは大文字 | print("The scientific value is : {:E}".format(40))出力: The scientific value is : 4.000000E+01 |
:f |
固定小数点数形式で出力。デフォルトで6桁の小数。2桁にする場合は.2f | print("The value is : {:f}".format(40))出力: The value is : 40.000000 例: 小数点以下2桁表示
出力: The value is: 40.00 |
:o |
8進数形式で出力 | print("The value is : {:o}".format(500))出力: The value is : 764 |
:x |
16進数形式で出力 (小文字) | print("The value is : {:x}".format(500))出力: The value is : 1f4 |
:X |
16進数形式で出力 (大文字) | print("The value is : {:X}".format(500))出力: The value is : 1F4 |
:n |
数値形式で出力 | print("The value is : {:n}".format(500.00))出力: The value is : 500 |
:% |
パーセント形式で出力。デフォルト6桁小数。小数なしなら{:.0%} | print("The value is : {:%}".format(0.80))出力: The value is : 80.000000% 小数なし例: {:.0%}
The value is: 80% |
:_ |
アンダースコアを千単位区切りとして出力 (Python 3.6+) | print("The value is {:_}".format(1000000))出力: The value is : 1_000_000 |
:, |
カンマを千単位区切りとして出力 | print("The value is : {:,}".format(1000000))出力: The value is : 1,000,000 |
: |
正の数値の前にスペースを追加 | 数値の前にスペース/パディングを追加する例。数値5はスペース数を示す。
出力: The value is: 40 |
:- |
負の数値の前にマイナス記号を追加 | {:-}で負数前にマイナス(-)記号を付ける例。
出力: The value is: -40 |
:+ |
プラス記号で正数を明示 | {:+}で数値前にプラス(+)記号を付ける例。
出力: The value is: +40 |
:= |
イコールで+/-記号を左側に配置 | {:=}でイコール記号の前に+/-記号を付ける例。
出力: The value is -40 |
:^ |
最終結果を中央揃え | {:^}で中央揃え。数値10で10スペース追加し中央揃えを示す。
出力: The value 40 is a positive value 10スペースが最終テキストに追加され、置換値が10スペースの間で中央揃えされる。10スペースは中央揃えを示すためだけに追加。 |
:> |
最終結果を右揃え | (:>10)でスペース10追加、置換値は右揃え。
出力: The value 40 is positive value |
:< |
最終結果を左揃え | (:<10)でスペース10追加、置換値は左揃え。
出力: The value 40 is positive value |
クラスでのformat()使用
この例ではクラスを作成し、.format Pythonメソッド内でクラスオブジェクトを使用します。プレースホルダはクラスオブジェクトを通じてクラスプロパティやメンバーを参照します。
例:
format(c=MyClass())でクラスを呼び出し。オブジェクトcはクラスMyClass()内のプロパティとメソッドへの参照を持ちます。
class MyClass:
msg1="Guru"
msg2="Tutorials"
print("Welcome to {c.msg1}99 {c.msg2}!".format(c=MyClass()))
出力:
Welcome to Guru99 Tutorials!
辞書でのformat()使用
以下の例のように、辞書をformat()内で使用することも可能です:
my_dict = {'msg1': "Welcome", 'msg2': 'Guru99'}
print("{m[msg1]} to {m[msg2]} Tutorials!".format(m=my_dict))
出力:
Welcome to Guru99 Tutorials!
変数置換のパディング
string.format()メソッドを使うと、プレースホルダ内でパディングやスペースを追加できます。
例:
以下の例ではformat()を使ってプレースホルダ内にスペースを追加。スペースを追加するには、コロン(:)の後にスペース数を中括弧内で指定。プレースホルダは{:5}のようになります。
print("I have {:5} dogs and {:5} cat".format(2,1))
出力:
I have 2 dogs and 1 cat
インデックスをプレースホルダ内で指定することも可能: {0:5}では0がformat内の最初の値を参照。
print("I have {0:5} dogs and {1:5} cat".format(2,1))
出力:
I have 2 dogs and 1 cat
まとめ
- Python文字列クラスは、プレースホルダ付き文字列を有効な値で置換・変換する重要な組み込みコマンドformat()を提供
- Python文字列モジュールのプレースホルダは中括弧で定義、例: 「Welcome to Guru99 {}」。format('value here')
- プレースホルダは空{}、変数{name}、数値インデックス{0}, {1}などの形式を取れる
- プレースホルダ内でPython文字列フォーマットを使用すると、パディング、中央揃え、数値フォーマットに役立つ
Python
- Python strip()メソッド完全ガイド:実践例付き
- Python str.count()マスター:文字と部分文字列のカウント実例集
- Python String.find()メソッド完全ガイド:構文、例、代替手法
- Pythonラムダ関数をマスターする:実例とベストプラクティス
- Python round()関数を実例で徹底解説
- Python map()関数をマスター:構文、例、ベストプラクティス
- Python timeit():実行時間測定の実例付きガイド
- Python collections.Counter:効率的なカウント、更新、演算操作
- Python type()とisinstance()の理解:実例付き解説
- Java String.indexOf()マスター:部分文字列検索と実践例
- Java String.compareTo()マスター:構文、ユースケース、実践例