Python - 文字列の書式設定

format 関数

文字列の関数である format 関数を使用すると、文字列中の置換フィールド {, } が引数に指定した変数で置換されます。変数が複数ある場合は , で区切って指定することができます。

name = "Alice"
age = 25

print("{} years old".format(age))
# 25 years old

print("{} is {} years old".format(name, age))
# Alice is 25 years old
format 関数を使った出力

文字列中の置換フィールドにインデックスを付与することで、引数の順番に応じた値が置換されます。

name = "Alice"
age = 25

print("{0} is {1} years old / {0}{0}{0}".format(name, age))
# Alice is 25 years old / AliceAliceAlice
置換フィールドにインデックスを使った出力

文字列の先頭に f を付与した場合、文字列中の置換フィールドに変数を直接指定できます。ただし、この文字列を使用する場合は、Python 3.6 以上である必要があります。この文字列は、f 文字列 (f-strings、フォーマット文字列、フォーマット済み文字列リテラル) と呼ばれます。

name = "Alice"
age = 25

print(f"{name} is {age} years old")
# Alice is 25 years old
f 文字列を使った出力

置換フィールドを通常の括弧として扱いたい場合は、{{, }} としてエスケープします。

name = "Alice"
age = 25

print("{{}} is {{}} years old".format(name, age))
# {} is {} years old
置換フィールドをエスケープ処理した出力

format 関数を指定した文字列や、f 文字列の置換フィールド内に、書式指定文字列を指定した場合、任意の書式にフォーマットして出力できます。

{:書式指定文字列}のように : のあとに書式化文字列を記述します。置換フィールドにインデックスや、名前を指定する場合は、そのあとに:書式指定文字列を記述します。

num = 0.45
print("{0:.4f} is {0:.2%}".format(num))
# 0.4500 is 45.00%

print(f"{num:.4f} is {num:.2%}")
# 0.4500 is 45.00%
format 関数を使った出力

書式指定文字列によって様々なフォーマットにすることが可能です。

i = 255
print("left   : {:<8}".format(i))   # left    : 255        (スペース埋め8桁で左寄せ)
print("center : {:^8}".format(i))   # center  :   255      (スペース埋め8桁で中央寄せ)
print("right  : {:>8}".format(i))   # right   :      255   (スペース埋め8桁で右寄せ)
print("zero   : {:08}".format(i))   # zero    : 00000255   (0埋め8桁)
print("bin    : {:b}".format(i))    # bin     : 11111111   (2進数)
print("oct    : {:o}".format(i))    # oct     : 377        (8進数)
print("hex    : {:x}".format(i))    # hex     : ff         (16進数)

f = 0.1234
print("digit   : {:.2}".format(f))  # digit   : 0.12       (小数点以下2桁)
print("digit   : {:.6f}".format(f)) # digit   : 0.123400   (小数点以下6桁で0埋め)
print("exp     : {:.4e}".format(f)) # exp     : 1.2340e-01 (指数表記)
print("percent : {:.0%}".format(f)) # percent : 12%        (パーセント表記)
format 関数を使った出力

上記の例は format 関数ですが、f 文字列でも同様の書式指定文字列が使用できます。

0
SHARE
Twitter
@murashun
お問い合わせ
murashun@gmail.com
ご質問(マシュマロ)
https://marshmallow-qa.com/murashun
ご支援(Stripe)
https://checkout.stripe.com/