フォーマット済み文字列リテラル (f-strings)
>>> str_val = 'abc' >>> f'{str_val:>6}' ' abc' >>> pi = 3.14159265358979 >>> f'pi: {pi:.2f}' 'pi: 3.14' >>> f'pi: {pi:6.3f}' 'pi: 3.142' >>> flt_val = 123456789.0123456 >>> f'float value: {flt_val:,.4f}' 'float value: 123,456,789.0123' >>> flt_val = 1234.5678 >>> f'float value: {flt_val:>10,.2f}' 'float value: 1,234.57' >>> f'float value: {flt_val:>14,.6f}' 'float value: 1,234.567800' >>> 'int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}'.format(65536) 'int: 65536; hex: 0x10000; oct: 0o200000; bin: 0b10000000000000000' >>> str = ' title ' >>> f'{str:->20}' '------------- title ' >>> f'{str:-^20}' '------ title -------' >>> f'{str:-<20}' ' title -------------' >>>
書式編集のパフォーマンス比較
$ python Python 3.8.3 (tags/v3.8.3:6f8c832, May 13 2020, 22:37:02) [MSC v.1924 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import timeit >>> timeit.timeit("""name = "TomoYan";age = 99; ... f'{name} is {age}.'""", number = 1000000) 0.2775605999999584 >>> timeit.timeit("""name = "TomoYan";age = 99; ... '%s is %s.' % (name, age)""", number = 1000000) 0.36503240000001824 >>> timeit.timeit("""name = "TomoYan";age = 99; ... '{} is {}.'.format(name, age)""", number = 1000000) 0.4583815999999956 >>> timeit.timeit("""name = "TomoYan";age = 99; ... '{0} is {1}.'.format(name, age)""", number = 1000000) >>>
※f-strings の書式編集がもっとも高速である。
※次に、従来からの % 構文の書式編集、{} の置換フィールド、{0} の置換フィールド(インデックス番号)と続く。