Pythonのformat()メソッドを使いこなす

format()メソッドを使いこなす

format()メソッドを使うと、文字列の置換などを詳細にカスタマイズすることができるメソッドです。詳細にカスタマイズできる分、少し複雑なのでここで詳しく見ていくことにしましょう。

format()メソッドは以下のように使用します。

format(引数1,引数2,引数3,・・・)

format()メソッドでは、「{}」という置換フィールドと呼ばれる機能を使います。文字列内に「{}」で囲まれた置換フィールドを引数で置換します。

以下のように使用します。

>>> print ("今日はとても寒い{}です。".format("夜"))
今日はとても寒い夜です。

文字列内の置換フィールドの部分が、引数の「夜」に置換されます。置換フィールドを複数使用する場合は、以下のように使用します。

>>> print ("{}はとても寒い{}です。".format("今日","夜"))
今日はとても寒い夜です。

キーボードからの入力に対しても、format()メソッドを使用することができます。例として身長と体重を入力して、BMI(身長の二乗に対する体重の比で体格を表す指数)と標準体重を表示する例を示します。

% vim format.py
taijyuu = int(input("体重は?(kg):"))
sinchou = int(input("身長は?(cm):"))

bmi = taijyuu / (sinchou * sinchou / 10000)
hyoujun = (sinchou * sinchou / 10000) * 22

print ("体重{}kg、身長{}cmに場合のBMIは、{}です。".format(taijyuu,sinchou,bmi))
print ("身長{}cmの場合の標準体重は、{}kgです。".format(sinchou,hyoujun))

実行結果は以下の通りです。

% python format.py
体重は?(kg):80
身長は?(cm):170
体重80kg、身長170cmに場合のBMIは、27.681660899653977です。
身長170cmの場合の標準体重は、63.580000000000005kgです。

BMIと標準体重を小数点ではなく、整数で表示させるにはint()関数を使用して以下のように記述します。

% vim format.py
taijyuu = int(input("体重は?(kg):"))
sinchou = int(input("身長は?(cm):"))

bmi = taijyuu / (sinchou * sinchou / 10000)
hyoujun = (sinchou * sinchou / 10000) * 22

print ("体重{}kg、身長{}cmに場合のBMIは、{}です。".format(taijyuu,sinchou,iny(bmi)))
print ("身長{}cmの場合の標準体重は、{}kgです。".format(sinchou,int(hyoujun)))
% python format.py
体重は?(kg):80
身長は?(cm):170
体重80kg、身長170cmに場合のBMIは、27です。
身長170cmの場合の標準体重は、63kgです。

引数の位置を指定する

置換フィールドの「{}」内に数値を入れることで、引数の位置を指定することができます。

>>> print ("{0}はとても寒い{1}です。".format("今日","夜"))
今日はとても寒い夜です。
>>> print ("{1}はとても寒い{0}です。".format("今日","夜"))
夜はとても寒い今日です。

上記のように「{0}」とすると、format()メソッドの1つめの引数を、「{1}」とすると2つめの引数を指定する意味になります。

数値の小数点の桁を指定する

先ほどのプログラムで、int()関数を使用してBMIと標準体重を整数で表示させるようにしましたが、format()メソッドを使って小数点の桁を指定することもできます。

形式は以下の通りです。

{引数の番号:.桁f}
% vim format.py
taijyuu = int(input("体重は?(kg):"))
sinchou = int(input("身長は?(cm):"))

bmi = taijyuu / (sinchou * sinchou / 10000)
hyoujun = (sinchou * sinchou / 10000) * 22

print ("体重{}kg、身長{}cmに場合のBMIは、{:.3f}です。".format(taijyuu,sinchou,bmi))
print ("身長{}cmの場合の標準体重は、{:.2f}kgです。".format(sinchou,hyoujun))

BMIは小数点以下3桁、標準体重は小数点以下2桁で表示する場合、上記のように記述します。実行結果は以下の通りです。

% python format.py
体重は?(kg):80
身長は?(cm):170
体重80kg、身長170cmに場合のBMIは、27.682です。
身長170cmの場合の標準体重は、63.58kgです。

数値を3桁カンマ区切りにする

数値が大きい場合に、3桁ごとに「,(カンマ)」で区切ることがありますが、fromat()メソッドを使うとそのようなことも簡単に行うことができます。

>>> print ("{}".format(num))
123456789
>>> print ("{:,d}".format(num))
123,456,789

上記のように「{引数の番号:,d}」と記述すると、3桁ごとにカンマで区切って出力することが可能です。

関連記事

メールマガジン

ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!

「初心者にも理解できるネットワーク技術」

これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。

もちろん無料です!!

↓メールマガジン購読はこちら↓

メールアドレス: