PYTHON MEBY

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です

関連記事