Python

【Python】文字列フォーマット

環境

macOS Big Sur
Python3.8

formatメソッド

要素の差し込み

文字列メソッドである「format()メソッド」を使用することで、定型文の一部に文字列を差し込むことができます。

差し込みたい場所を{}で示し、引数に差し込む文字列を指定します。

# 差し込み
>>> 'AB{}BA'.format('C')
'ABCBA'

# 指定順
>>> 'AB{}B{}'.format('C', 'A')
'ABCBA'

# インデックス指定
>>> 'A{0}{1}{0}A'.format('B', 'C')
'ABCBA'

# キーワード指定
>>> 'A{b}{c}{b}A'.format(b='B', c='C')
'ABCBA'

# 辞書指定
>>> merge = {'b': 'B', 'c': 'C'}
>>> 'A{0[b]}{0[c]}{0[b]}A'.format(merge)  # 差し込み側では{0[キー]}として指定します。キーにクオーテーションは不要。
'ABCBA'

# クラス属性(変数)指定
>>> class MyClass:
...     def __init__(self):
...         self.b = 'B'
...         self.c = 'C'
... 
>>> i = MyClass()
>>> 'A{0.b}{0.c}{0.b}A'.format(i)
'ABCBA'

 

辞書指定及びクラス属性(変数)指定では、{}内で辞書名及びインスタンス名を0としていますが、これはメソッドの引数の位置を表しているにすぎません。

複数の辞書やインスタンスを指定する場合は、「0, 1, 2, ...」と順番に引数の位置を指定します。

>>> merge1 = {'b': 'B'}
>>> merge2 = {'c': 'C'}
>>> 'A{0[b]}{1[c]}{0[b]}A'.format(merge1, merge2)
'ABCBA'

>>> class MyClass:
...     def __init__(self):
...         self.b = 'B'
... 
>>> i1 = MyClass()
>>> i2 = MyClass()
>>> i2.c = 'C'
>>> 'A{0.b}{1.c}{0.b}A'.format(i1, i2)
'ABCBA'

 

オプション指定

format()メソッドでは、{}の中にコロン(:)を追加することで、表現のフォーマットを指定することができます。

>>> a = 'num{:>6,}'.format(500)
>>> b = 'num{:>6,}'.format(1000)
>>> print(a, b, sep='\n')
num   500
num 1,000
オプション 内容
数値 指定した数値の文字分の幅を確保します。
< 要素を左詰めで表示します。{:<5}は、5文字分のスペースで左詰めを表します。
> 要素を右詰めで表示します。{:>5}は、5文字分のスペースで右詰めを表します。
^ 要素を中央で表示します。{:^5}は、5文字分のスペースで中央揃えを表します。
+ 数値に符号を付けます。+,-共に表示します。
- 数値に符号を付けます。-の時のみ表示します。
, 数値の1000の位にコンマを付けます。
% 数値をパーセンテージで表示します。{:.2%}は、小数点以下第2位までパーセンテージで表示します。

f文字列

引用符の前に「f」を入れることで簡単に要素の差し込みを行えます。差し込む要素は変数に定義し、差し込みたい場所で変数名を{}で囲みます。このような表記方法を「f文字列」といいます。

>>> c = 'C'
>>> f'AB{c}BA'
'ABCBA'