環境
・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'