python§02: format() はprint()と組み合わせてよく使う

Python基礎

“文字列{}文字列”.format(“あいうえお”)

pythonのformat()は、文字列の書式文字列を指定するメソッドです。

 

以下のような問題点を抱えている人にこの記事はおすすめです

  1. pythonで自由に変数を埋め込んだ表示をprint()でしたい人
  2. print()関数で桁揃えでうまくいかないで困っている人
  3. print()で表示するときに変数の順番を簡単に変えたい人

 

まずは表題のような形式を例文で説明しましょう。

print("私の名前は{}です".format("ごんべい")) 
#私の名前はごんべいです

print()の中身を取り出すと、

“私の名前は{}です”.format(“ごんべい”)

となっています。

.formatの前の部分が「書式文字列」で、{}に「ごんべい」が挿入されていることがわかります。

この{}はいくつでも設定できて

print("今日は{}年{}月{}日{}曜日です".format("2020","7","18","土")) 
#今日は2020年7月18日土曜日です

のように埋め込むことができます。(注意:数があわないとエラーになります)

順番(インデックス番号)も指定することができます。この例では、わざと3→2→1→0と順番を逆にしていますが、自由に順番を入れ替えることができるという意味です。

print("今日は{3:}年{2:}月{1:}日{0:}曜日です".format("土","18","7","2020")) 
#今日は2020年7月18日土曜日です

小数点以下を3桁にできています。

print("{:10.3f}".format(2/3*100)) 
#____66.667

整数部分を含めて、10文字の文字幅を指定しています。小数点以下は3桁です。この出力例は、わざとスペースをアンダースコアに変えて表現しています。

print("{:,}".format(123456789012345.6789)) 
#123,456,789,012,345.67

3桁ずつカンマ(,)で区切る例です。小数点以下は二桁がデフォルトです。

print("{:,.3f}".format(123456789012345.6789)) 
#123,456,789,012,345.672

{:,.3f}とピリオドと小数点以下3桁と浮動小数点であるfを指定してやると、小数点以下を3桁にして、整数部分は3桁ずつカンマで区切られていることがわかります。

fの部分は、型(タイプ)を表しています。

  • 浮動小数点 f 12.345
  • 整数    d  12345
  • 指数表現  e    1.23e10
  • 文字列   s ”abcdef”

があります。

文字幅を指定する ”{:20s}”.format(“1234567890”)

文字列の文字幅(文字数)を指定する方法です。

print("{:*>20s}".format("1234567890")) 
#__________1234567890

ここでは、20文字の幅を指定しています。そのほか、20文字に足りない場合のパディング文字として「*」を使っています。そして、文字寄せを右寄せ指定しています。

  • 右寄せ >
  • 左寄せ <
  • 中央  ^

の3種類があります。

パディング(文字埋め) ”{:010.3f}”.format(123.4567)

パディングは、数値の場合は、ゼロで埋めたり、符号をつけたりできます。

print("{:08.3f}".format(2/3*100)) 
#0066.667

このようにプラス符号(+)やマイナス符号(-)を付ける方法もあります。符号も1文字として文字幅を調整します。

以上がformat()メソッドの説明となります。文字列をつくるためのものなので、print()で出力したりする以外にファイルへ整形出力する場合にも利用できます。

print()については、こちらで解説しています → print() を極める たかがprint、されどprint

f文字列(フォーマット文字列)も便利 追記:2020.8.10

この記事では、format()関数について紹介してきましたが、重要な内容を忘れていました。

「f文字列」です。これは、format()関数と同じく、文字列のフォーマットを指定できるのですが、いくつか異なる特徴もあります。

  1. 置換フィールドに直接変数が使える f'{hensu}’ という感じ
  2. 置換フィールドに式が使える f'{a+b}’

 

a=123
b=23.45678
s='abcdefg'

print(f'{a} {b}')
print(f'{a:05d} {b:5.3f}')
print(f'{a+b}')
print(f'{a+b:5.2f}')
print(f'{s:*^20}')

'''以下出力結果
123 23.45678
00123 23.457
146.45678
146.46
******abcdefg*******
HIt Enter Key!
'''
Tanudon

f文字列は、簡単に記述できるので、とても便利です。format()関数では、置換フィールドの順番を変更したり、f文字列にはできないこともあるので、場合によって使い分けるといいですね。

 

コメント