Pythonでformatメソッドを用いた書式の指定
> > Pythonでformatメソッドを用いた書式の指定
str.format()メソッド
文字列strにはstr.format(*args, **kwargs)メソッドが用意されており、文字列の書式を指定することが可能です。
環境
今回動作の確認を行った際のバージョンは下記の通り
python:3.10.9
基本的な使い方
文字列内に置換フィールド{}を組み込み、format()を使用することでformat()の引数で指定した値に置き換えることが可能です。
置換フィールド{}と引数の数が一致していれば複数利用も可能です。
if __name__ == '__main__':print('{}回目のテストです'.format(10))# 10回目のテストですprint('{}回目の{}です'.format(10, 'テスト'))# 10回目のテストです
引数の数が足りていない場合は、下記の様にエラーが発生します。
また、引数が多い場合は無視されます。
if __name__ == '__main__':print('{}回目の{}です'.format(10, 'テスト', 100))# 10回目のテストですprint('{}回目の{}です'.format(10))# IndexError: Replacement index 1 out of range for positional args tuple
使用する引数の指定
整数を使って指定
置換フィールド{}内に整数値を指定することで使用する引数を指定することが出来ます。同じ引数を複数回使用することも可能です。
if __name__ == '__main__':print('{0}回目の{1}です。{2}回目の{1}でNGがありました'.format(10, 'テスト', 5))# 10回目のテストです。5回目のテストでNGがありました
名前を使って指定
置換フィールド{}とformat()の引数に名前を指定することで使用する引数を指定することが出来ます。整数の時同様、同じ引数を複数回使用することも可能です。
if __name__ == '__main__':print('{num1}回目の{st}です。{ng}回目の{st}でNGがありました'.format(num1=10, st='テスト', ng=5))# 10回目のテストです。5回目のテストでNGがありました
書式の指定
「:」を用いて書式指定をすることが可能です。
上記に記載の通り名前を使って使用する引数の指定も可能です。
0埋め
if __name__ == '__main__':for i in range(3):print('{:08}回目です'.format(i))# 00000000回目です# 00000001回目です# 00000002回目です# 名前を使って指定for i in range(3):print('{num:08}回目です'.format(num=i))# 00000000回目です# 00000001回目です# 00000002回目です
桁区切り
if __name__ == '__main__':for i in range(3):print('{:,}回目です'.format(i+1000))# 1,000回目です# 1,001回目です# 1,002回目です# 名前を使って指定for i in range(3):print('{num:,}回目です'.format(num=i + 1000))# 1,000回目です# 1,001回目です# 1,002回目です
小数点以下の桁数指定
if __name__ == '__main__':for i in range(1,3):print('{:.3f}回目です'.format(i/100))# 0.010回目です# 0.020回目です# 名前を使って指定for i in range(1, 3):print('{num:.3f}回目です'.format(num=i / 100))# 0.010回目です# 0.020回目です
幅指定(自動、左寄せ、中央寄せ、右寄せ)
if __name__ == '__main__':x = 10y = 20# 自動設定print('{x:5}と{y:10}の和は{sum}です'.format(x=x, y=y, sum=x+y))# 10と 20の和は30です# 左寄せprint('{x:<5}と{y:<10}の和は{sum}です'.format(x=x, y=y, sum=x+y))# 10 と20 の和は30です# 中央寄せprint('{x:^5}と{y:^10}の和は{sum}です'.format(x=x, y=y, sum=x+y))# 10 と 20 の和は30です# 右寄せprint('{x:>5}と{y:>10}の和は{sum}です'.format(x=x, y=y, sum=x+y))# 10と 20の和は30です