今回は、Pythonのprint関数で数値や文字列の桁数を指定する方法についてご紹介します。
Pythonのprintで桁数を指定する基本概要
Pythonのprint関数では、数値や文字列の表示形式を自在にコントロールできます。
特に桁数を指定したい場合は、以下の3つの方法が代表的です。
- %-書式指定(旧式のフォーマット)
- str.format()メソッド
- f文字列(f-string)
それぞれの特徴や使い方を理解しておくことで、見やすい出力や整形されたログを実現できます。
%-書式指定を使った桁数指定
%-書式指定は、古くからある方法です。
右寄せ、左寄せ、ゼロ埋めなどのフォーマットを簡単に実装できます。
整数の桁数を指定する
以下のコードでは、整数を5桁の幅で右寄せして表示します。
1 2 |
num = 42 # 整数 print("%5d" % num) # 右寄せで5桁分を確保 |
42
指定したフィールド幅よりも数値の桁数が少ない場合は、空白で埋められます。
浮動小数点数の桁数を指定する
小数点以下の桁数を指定するときは、以下のように書きます。
1 2 |
pi = 3.14159 # 浮動小数点数 print("%10.2f" % pi) # 全体で10桁確保し、小数点以下2桁で表示 |
3.14
先頭に空白が入っているのは、10桁の幅に合わせて右寄せを行っているためです。
文字列の桁数を指定する
文字列の桁数を指定する場合は、sを使います。
1 2 3 |
s = "abc" print("%-10s" % s) # 左寄せ、10桁分のフィールド print("%10s" % s) # 右寄せ、10桁分のフィールド |
abc
abc
%-書式指定は簡潔で軽量ですが、やや古いスタイルのためメンテナンス性を重視する場合は後述の方法が好まれることがあります。
str.format()メソッドを使った桁数指定
Python 2.6以降で利用できる方法です。
フォーマット文字列内に{:…}の形式で指定し、柔軟な書式設定が可能です。
整数の桁数指定
1 2 3 |
num = 42 print("{:5d}".format(num)) # 右寄せ、5桁分のフィールド print("{:0>5d}".format(num)) # 右寄せしつつ、空白部分を0で埋める |
42
00042
フィールド幅を確保しつつ、0埋めなどの細かな指定もできます。
浮動小数点数の桁数指定
小数点以下の桁数を指定する場合は、:.2fのように書きます。
1 2 |
pi = 3.14159 print("{:10.2f}".format(pi)) # 全体10桁、小数点以下2桁 |
3.14
数値の部分に空白が入るのは、10桁に合わせて右寄せされているからです。
文字列の桁数指定
1 2 3 4 |
s = "abc" print("{:<10}".format(s)) # 左寄せ print("{:>10}".format(s)) # 右寄せ print("{:^10}".format(s)) # 中央寄せ |
abc
abc
abc
fillやalignなどのオプションも組み合わせることで、任意の文字でパディングを行ったり、配置位置を調整することができます。
f文字列(f-string)を使った桁数指定
Python 3.6以降で使える最もシンプルな方法です。
変数を中括弧 {} に直接埋め込むことで、コードの可読性を高められます。
整数の桁数指定
1 2 3 |
num = 42 print(f"{num:5d}") # 右寄せ、5桁分 print(f"{num:05d}") # 5桁分を確保して0埋め |
42
00042
浮動小数点数の桁数指定
1 2 |
pi = 3.14159 print(f"{pi:10.2f}") # 全体10桁で右寄せ、小数点以下2桁 |
3.14
文字列の桁数指定
1 2 3 4 |
s = "abc" print(f"{s:<10}") # 左寄せ print(f"{s:>10}") # 右寄せ print(f"{s:^10}") # 中央寄せ |
abc
abc
abc
f文字列は、シンプルかつ可読性に優れた表記であるため、現在最も主流の書式指定方法の一つとなっています。
よくあるエラーや注意点
- 指定幅よりも値が長い:指定した桁数を超える文字数の場合、桁数指定は無視され、値がそのまま出力されます。
- 型とフォーマット指定子の不一致:数値に文字列用のsを使うなど、型が合わない指定子を使うとエラーが発生します。
- バージョン制約:f文字列はPython 3.6以降で利用可能です。古い環境ではstr.format()や%-書式指定を使う必要があります。
- 方法の混在:複数の方法を同じコード内で混在させると可読性が下がります。同じプロジェクト内では統一するのがおすすめです。
まとめ
Pythonのprintで桁数を指定する方法は、%-書式指定、str.format()メソッド、f文字列の3つがあります。
どれも数値や文字列を任意の幅に整形でき、右寄せ、左寄せ、ゼロ埋め、小数点以下の桁数指定などを柔軟に行えます。
プロジェクトや環境に応じて最適な方法を選び、見やすい出力フォーマットを実現してください。