今回は、Pythonのformat()関数を使った文字列や値の書式設定にフォーカスします。
Python format() 関数を使ってみよう
Pythonのformat()関数は、文字列をフォーマットするために使用される組み込みのString関数です。
Pythonの format()関数 は、文字列を位置によってフォーマットします。
したがって、ユーザーはformat()関数を使用して出力内の文字列の位置を変更することができます。
構文は以下の通りです。
"{}".format(value)
|
-
{}: これらの中括弧はフォーマッタとして機能し、関数が呼び出されると、定義された位置に配置される文字列で置き換えられます。 -
value: このパラメータは、文字列、数値、あるいは浮動小数点数であることもあります。このパラメータは、出力においてフォーマッタによって置換される値を表します。
例えば、以下の様になります。
s1 = 'Python'
s2 = 'with'
s4 = 'JournalDev'
s3 = "{} {} {}".format(s1, s2, s4)
print(s3)
|
結果は、以下の通りになります。
Python with JournalDev |
Python format() によるインデックスフォーマット
format()関数は、ユーザー定義の位置で文字列をフォーマットする目的もあります。
つまり、中括弧の中のインデックス値を指定することで、出力に配置する文字列または値の位置を変更することができます。
例えば、以下の様になります。
s1 = 'Python'
s2 = 'with'
s4 = 'Data Science'
res = "{2} {1} {0}".format(s1, s2, s4)
print(res)
|
上記のコードでは、format(s1, s2, s4) は内部で関数に渡された値に 0, 1, 2 というようにインデックス値を割り当てています。
つまり、s1にはインデックス0が、s2にはインデックス1が、s4にはインデックス2が割り当てられています。
つまり、{}の中に文字列のインデックス値を渡すことで、インデックス値によって文字列の位置を変化させることができる。
結果は以下の通りです。
Data Science with Python |
format()関数の引数への値の渡し方
Pythonのformat()関数を使うと、関数自体のパラメータリストの中で、表示させたい変数に値を代入することができます。
構文は以下の通りです。
"{var1}".format(var1='value')
|
例えば、以下の様になります。
res = "{s4} {s2} {s1}".format(s1 = 'Python',s2 = 'with',s4 = 'Data Science')
print(res)
|
結果は以下の通りです。
Data Science with Python |
この記事もチェック:Pythonのexec関数の使い方|引数や変数の使い方を解説する
Python format() 関数で整形された文字列をパディングする
文字列は、format()関数を使ってアライメントやパディングなどの書式を設定することもできます。
構文は以下の通りです。
#left padding"{:>number}".format(value)
#right padding"{:<number}".format(value)
#centre padding"{:^number}".format(value)
|
特定の数値を渡すことで、文字列の周りにパディングされる文字数を指定します。
例えば、以下の様になります。
"{key}".format(**dict)
|
Python format() 関数のパラメータとして dict を渡す
Pythonの辞書は、フォーマットされる値としてformat()関数に渡すこともできます。
構文は以下の通りです。
dict1 = {"Python":"A","Java":"B","Cpp":"D"}
res = "{Python} {Cpp}".format(**dict1)
print(res)
|
キーは{}に、format()関数はキーをその値に置き換えるためにそれぞれ渡されます。
引数として dict のキーを渡しているので、キーを値に置き換えるためには、辞書を展開する必要があります。
そこで、辞書を展開するために、Python "**" 演算子を使用します。
例えば、以下の様になります。
A D |
結果は、以下の通りになります。
"{0.real},{0.imag}".format(complex_number)
|
format() 関数の引数に複素数を渡す場合
Python format() 関数は複素数から実数および虚数にアクセスするために使用することができます。
構文は以下の通りです。
num = 20-3j
res = "Real-part:{0.real}, Imaginary-part:{0.imag}".format(num)
print(res)
|
例えば、以下の様になります。
Real-part:20.0, Imaginary-part:-3.0
|
結果は以下の通りです。
"{:,}".format(number)
|
この記事もチェック:Pythonのmapメソッドの使い方|ラムダ関数や引数が複数の場合の使い方も解説
カンマを区切り文字として使う Python format() 関数
Python format() 関数では、「”,”」をセパレータとして使用して数値を区切ることができます。
構文は以下の通りです。
num = 10000000000
res = "{:,}".format(num)
print(res)
|
3 桁の数字の後に「,」というセパレータを追加し、千の位を表すようにします。
例:
10,000,000,000
|
結果は以下の通りです。
#Hexadecimal representation"{0:x}".format(value)
#Octal representation"{0:o}".format(value)
#Decimal representation"{0:d}".format(value)
#Binary representation"{0:b}".format(value)
|
format() 関数による数値の書式設定
Pythonのformat()関数には、数値の書式設定もできる機能があります。
数値をフォーマットするだけでなく、format()関数を使えば、2進数、8進数、16進数などの異なる数体系に従って数値を表現することも可能です。
構文は以下の様な感じです。
num = 10
binary = "{0:b}".format(num)
print("Binary representation:", binary)
hexadecimal = "{0:x}".format(num)
print("Hexadecimal representation:", hexadecimal)
octal = "{0:o}".format(num)
print("Octal Decimal representation:", octal)
decimal = "{0:d}".format(num)
print("Decimal representation:", decimal)
|
例として以下の様になります。
Binary representation: 1010
Hexadecimal representation: aOctal Decimal representation: 12
Decimal representation: 10
|
結果は以下の通りです。

まとめ
この記事では、Python format()関数の動作と、文字列や数値などに対する関数のさまざまな使用法について見てきました。
文字列のフォーマットについてより詳しく知りたい方は、Pythonのf-stringについて学ぶことを強くお勧めします。