Pythonで数値の書式設定(format, f文字列 (Python 3.6以降))
この記事ではPythonにおける数値の書式設定について解説します。formatメソッド、f文字列(Python3.6以降)を用いた様々な数値フォーマットの方法を例を用いて説明します。
目次
数値の書式設定の概要
Pythonでは、数値を文字列に変換する際に、formatメソッドやf文字列を用いて様々な書式設定を行うことができます。これにより、数値を目的の形式で表示したり、ファイルに出力したりすることができます。
主にformatメソッドとf文字列(f-strings)という2つの方法があります。f文字列はPython3.6以降で使用可能です。どちらも同じような書式指定子が使えますが、f文字列の方がより簡潔で読みやすい記述ができます。
formatメソッドによる書式設定
formatメソッドは、文字列の{}プレースホルダーに値を挿入する際に書式を指定します。
value = 1234.5678
formatted_value = "{:f}".format(value)
print(formatted_value) # 出力: 1234.567800
formatted_value = "{:g}".format(value)
print(formatted_value) # 出力: 1234.57
formatted_value = "{:010.2f}".format(value)
print(formatted_value) # 出力: 001234.57
{:f} は通常の浮動小数点表示、{:g} は必要に応じて指数表記と通常の表記を切り替える、{:010.2f} は0埋め10桁で小数点以下2桁の浮動小数点表示です。
f文字列による書式設定
f文字列は、文字列の前にfを付けることで、{}の中に直接式を書くことができます。formatメソッドより簡潔で、可読性も向上します。
value = 1234.5678
formatted_value = f"{value:.2f}"
print(formatted_value) # 出力: 1234.57
formatted_value = f"{value:010.2f}"
print(formatted_value) # 出力: 001234.57
formatted_value = f"{value:g}"
print(formatted_value) # 出力: 1234.57
f文字列でもformatメソッドと同様の書式指定子が使用できます。
様々なフォーマット指定子
いくつかの基本的なフォーマット指定子を示します。
- d, i: 10進数
- o: 8進数
- x, X: 16進数(xは小文字、Xは大文字)
- e, E: 指数表記(eは小文字、Eは大文字)
- f: 浮動小数点表示
- g, G: 指数表記と浮動小数点表示を自動選択
- c: Unicode文字
- s: 文字列
- %: パーセント
数値の丸めと桁数の指定
小数点以下の桁数を指定するには、小数点の後に桁数を指定します。丸めは、標準的な四捨五入が行われます。
value = 3.141592
print(f"{value:.2f}") # 出力: 3.14
print(f"{value:.4f}") # 出力: 3.1416
符号の表示
+ を付加することで、正の数にも符号を表示します。
value = 10
print(f"{value:+} ") #出力: +10
value = -10
print(f"{value:+} ") #出力: -10
16進数、8進数、2進数表記
x, X, o, b を使うことで、16進数、8進数、2進数表記ができます。
value = 255
print(f"{value:x}") # 出力: ff
print(f"{value:X}") # 出力: FF
print(f"{value:o}") # 出力: 377
print(f"{value:b}") # 出力: 11111111
例
いくつかの具体的な例です。
num1 = 123456789
num2 = 3.14159
num3 = -10
print(f"10進数: {num1}, 浮動小数点: {num2:.3f}, 16進数: {num1:x}, 負数: {num3:+}") # 出力例: 10進数: 123456789, 浮動小数点: 3.142, 16進数: 75bcd15, 負数: -10
print(f"パーセント: {num2:.1%}") # 出力例: パーセント: 314.2%
print(f"数値と文字列の結合: 値は{num1}です") #出力例 数値と文字列の結合: 値は123456789です
関連記事
- Pythonで文字列をフォーマット(format, f文字列 (Python 3.6以降), %演算子)
- Pythonで文字列を中央寄せ・左寄せ・右寄せ(center, ljust, rjust)
- Pythonで日付・時刻のフォーマット変換(strftime, strptime)
- Pythonで四捨五入・切り上げ・切り捨て(round, math.ceil, math.floor)
- Pythonで整数・浮動小数点数・複素数間の型変換
- Pythonで十進数演算(decimal.Decimal)
- Pythonで分数演算(fractions.Fraction)
- Pythonでラムダ式(無名関数)を使う(lambda)
- Pythonで三角関数を計算(math.sin, math.cos, math.tan, etc.)
- Pythonで対数・指数関数を計算(math.log, math.exp, etc.)