LoginSignup
57
53

More than 5 years have passed since last update.

f-strings の使用例

Last updated at Posted at 2017-10-16

この記事は?

Python 3.6 で追加された f-strings (フォーマット済み文字列リテラル) の使用例です。式展開 の機能が存在する Ruby や JavaScript などの言語から移住してきた身なので重宝しています。ただ、書式指定文字列 の文法をしばしば忘れてしまうので備忘録として残します。

f-strings の使用例

位置揃えとパディング

number = 123

# ゼロパディングする。

f'{number:0>10}'  # 右寄せ
#=> '0000000123'

f'{number:0^10}'  # 中央寄せ
#=> '0001230000'

f'{number:0<10}'  # 左寄せ
#=> '1230000000'

# パディングのための文字列を指定しない場合は、半角スペースで埋められる。

f'{number:>10}'
#=> '       123'

f'{number:^10}'
#=> '   123    '

f'{number:<10}'
#=> '123       '

# パディングの長さやパディングに使う文字も変数で指定できる。

padding_length = 5

f'{number:0>{padding_length}}'
#=> '00123'

padding_char = '*'

f'{number:{padding_char}>{padding_length}}'
#=> '**123'

桁区切り

number = 1234567890

f'{number:,}'
#=> 1,234,567,890

小数点以下の桁数

ratio = 0.123

f'{ratio:.2}'
#=> 0.12

f'{ratio:.5}'
#=> 0.123

f'{ratio:.5f}'  # 末尾に固定小数点数フォーマット f を付けるとゼロパディングする。
#=> 0.12300

パーセント表示

ratio = 0.123

f'{ratio:%}'  # 固定小数点数のデフォルトの精度は 6 である。
#=> 12.300000%

f'{ratio:.3%}'
#=> 12.300%

str(), repr(), ascii()

class Man:
  def __init__(self, name):
    self.name = name

  def __str__(self):
    return self.name


man = Man('ジャギ')

f'こいつの名は{man}!'
#=> 'こいつの名はジャギ!'

f'こいつの名は{man!s}!'  # str(man) と同じ。
#=> 'こいつの名はジャギ!'

f'こいつの名は{man!r}!'  # repr(man) と同じ。
#=> 'こいつの名は<__main__.Man object at 0x10874c2b0>!'

f'こいつの名は{man.name!r}!'  # repr(man.name) と同じ。文字列がシングルクォーテーションで括られる。
#=> "こいつの名は'ジャギ'!"

f'こいつの名は{man.name!a}!'  # ascii(man.name) と同じ。
#=> "こいつの名は'\\u30b8\\u30e3\\u30ae'!"

print(f'こいつの名は{man.name!a}!')
# こいつの名は'\u30b8\u30e3\u30ae'!

参考

57
53
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
57
53