Pythonの2.6から新たに誕生したPython formatメソッドは、文字列を出力する際に変数の引数が表示できる機能を有しています。
ここでは、formatメソッドの基本的な構文の書き方や活用できる設定の例を解説します。
Python2.6からformatメソッドが追加された
1991年に開発されたPython(パイソン)は、インタプリタ上で実行するプログラミング言語です。2008年10月にリリースされたPython2.6以前のバージョンでは、C言語のような「%演算子」を使わなければいけませんでしたが、formatについてメソッドが追加されたことで、変数の内容を出力するのにとても便利になりました。
Python2.6とは
Python2.6は、2.0から次のメジャーバージョンと位置付けられていた3.0への移行準備用に設けられたバージョンで、新しいモジュールが次々と追加されています。その中にPython formatメソッドも新たに加わりました。
Python formatメソッドとは
あるキーワードの途中で、その値が条件によって異なる場合に変数を用いますが、その変数を埋め込むときに「formatメソッド」を使います。文字列を出力するためにprint関数を用いますが、そのような場合にfomatメソッドが威力を発揮します。
formatメソッドの基本
この章では、Pythonで使用するformatメソッドの基本的な使用方法について解説していきます。
formatメソッドの書き方
具体的なformatメソッドは、次のような構文を用います。
'str1{}str2'.format(var)
解説すると、str1とstr2は固定の文字列です。その間に中括弧(波括弧){}がありますが、この中にformatメソッドの引数である変数(var)が埋め込まれます。そして、後ろにformatメソッドを使う記述がついています。
formatメソッドの基本コード
具体的な基本コードのサンプルを見ていきましょう。
avar = 2024print("This is the {}th year.".format(avar))
こちらのプログラム構文を実行すると次のようになります。
This is the 2024th year.
解説するとavarという名前の変数があり、その中に2024を指定しています。そしてprint構文の中に固定文字列として「This is the」と「th year」が表示されていますが、その間に中括弧が入っています。
その後でformatメソッドが、変数avarの引数を表示させるという命令を出しています。変数avarの中には2024が入っているので、中括弧には2024が表示されるという仕組みです。
formatメソッドで複数の変数を指定する
上記のサンプルでは、ひとつの変数に対しての指定方法でしたが、複数の変数の文字を出力したい場合は、次のようなコードを記述すると可能です。
ye = 2024mo = 'April'da = '20th'print('Today is {0} of {1} {2}'.format(da,mo,ye))
この場合、ye、mo、daの3つの変数を用意し、その変数からの引数を指定しています。変数の方もyeだけがint(整数)型で、後は文字列型を使用しています。ここで変数の方は特に関係なく埋め込みが行われています。
また、中括弧内に0.1.2と数字が入っていて、これは各変数が文字列に代入させるための順番です。ただし中括弧内に数字が入っていなくても作動し、formatメソッド内で指定している引数の順番通りに表示されます。ちなみに、コードを実行すると次のように表示されるでしょう。
Today is 20th of April 2024
formatメソッドが活用できる書式指定
Pythonのformatメソッドをより使いこなせるため様々な書式指定があります。いくつかの例を見ていきましょう。
ゼロ埋め
桁数を合わせるためにゼロ埋めを行う方法です。0右寄せされます。
print('zero: {:0=5}'.format(95))
この構文は5桁に合わせたい時に0埋めして指定した場合です。
# zero: 00095
「0=5」と表していますが、=は省略が可能です。
print('zero: {:05}'.format(-80))
引数の数字がマイナスの構文の場合はこのようになります。
# zero: -00080
なお引数に文字列を指定するとエラーになるので注意しましょう。そのほか「zfill()」というゼロ埋め専用のメソッドがあります。
プラス・マイナスなどの符号
プラスやマイナスの符号を付けたい場合、デフォルトで何もしない場合はマイナスのみ符号が付きます。プラスをつけたい場合は書式か指定文字列に付ける必要があります。
print('sg: {}'.format(70))print('sg: {}'.format(-60))print('sg: {:+}'.format(50))print('sg: {:+}'.format(-40))#表示結果# sg: 70# sg: -60# sg: +50# sg: -40
日時
日時を表示する場合、書式化指定文字列にはdatetimeモジュールを利用します。
import datetimedt = datetime.datetime(2024, 4, 20, 03, 20, 45)print('datetime: {}'.format(dt))#表示結果# datetime: 2024-04-20 03:20:45
左右中央寄せ
左寄せが「<」中央寄せが「^」右寄せが「<」を用います。そして全体の文字数は数字で指定します。
print('left : {:<9}'.format(111))print('right : {:>9}'.format(222))print('center: {:^9}'.format(333))#表示結果# left : 111 # right : 222# center: 333
パーセント表示
パーセントで表示したい場合は、%を指定します。その結果int及びfloatの値を100倍したものとして変換します。また小数点以下はデフォルトの場合6桁ですが、桁数の指定も可能です。端数は偶数丸めです。左、中央、右寄せやゼロ埋めも可能です。
print('{:%}'.format(0.98765))print('{:.1%}'.format(0.98765))# 98.765000%# 98.8%print('{:%}'.format(6))print('{:.3%}'.format(6))# 600.000000%# 600.000%print('{:>10.2%}'.format(0.34567))print('{:010.2%}'.format(0.34567))# 34.57%# 000034.57%
2進・8進・16進
数字を2進数に変換する場合は「b」、8進数の場合は「o」、16進数は「x」を指定します。「X」と大文字にすると大文字表記になります。
print('bin: {:b}'.format(254))print('oct: {:o}'.format(253))print('hex: {:x}'.format(252))print('HEX: {:X}'.format(251))# bin: 11111110# oct: 375# hex: fc# HEX: FB
指数表記
指数(○○*10の〇乗)を表記する場合は、「e」を用います。「E」を用いると出力が大文字になります。
print('{:e}'.format(0.0001111))print('{:E}'.format(0.0001111))# 1.111000e-04# 1.111000E-04
python3.6以降はf文字列が追加された
formatの文字列メソッドは、現在主流になりつつあるpython3で非常に便利になりましたが、2016年12月23日にリリースされたPython3.6以降は、文字列メソッドstr.format()に代わってf文字列(f-strings)が新たに追加されました。
format文字列メソッドより簡潔に記述できることから、新しいバージョンでプログラミングを行う際にはformat文字列メソッドを利用する機会は少なくなっています。
python formatのまとめ
python formatメソッドは、バージョンの2.6から新たに備えられた機能です。print関数で文字列を出力する際に変数を入れることで表示できる方法で、様々な書式設定で記載ができます。また、バージョン3.6以降には「f文字列」が新たに導入されたため、文字レスメソッドとしての利用は減っていくものと考えられます。