Formatted string literals specificators

Теги:

Formatted string literals specificators

После значения переменной в скобках может быть добвален знак : для форматирвоания вывода.

!s вызывает str(), !r - repr(), и !a вызывает ascii()

Чтобы отобразить как текст выражения, так и его значение после вычисления (полезно при отладке), после выражения можно добавить знак равенства = (начиная с python3.8)

Пустое выражение недопустимо, а лямбда-функции и выражения присваивания := должны быть заключены в явные круглые скобки

Начиная с python3.8 доступны выражения с async и await for

Пробелы внутри скобок сохраняются

Примеры

>>> name = "Fred"
>>> f"He said his name is {name!r}."
"He said his name is 'Fred'."
>>> f"He said his name is {repr(name)}."  # repr() is equivalent to !r
"He said his name is 'Fred'."
>>> width = 10
>>> precision = 4
>>> value = decimal.Decimal("12.34567")
>>> f"result: {value:{width}.{precision}}"  # nested fields
'result:      12.35'
>>> today = datetime(year=2017, month=1, day=27)
>>> f"{today:%B %d, %Y}"  # using date format specifier
'January 27, 2017'
>>> f"{today=:%B %d, %Y}" # using date format specifier and debugging
'today=January 27, 2017'
>>> number = 1024
>>> f"{number:#0x}"  # using integer format specifier
'0x400'
>>> foo = "bar"
>>> f"{ foo = }" # preserves whitespace
" foo = 'bar'"
>>> line = "The mill's closed"
>>> f"{line = }"
'line = "The mill\'s closed"'
>>> f"{line = :20}"
"line = The mill's closed   "
>>> f"{line = !r:20}"
'line = "The mill\'s closed" '

Недопустимо использование ковычек, совпадающих с внешними и экранирующих символов

f"abc {a["x"]} def"    # error: outer string literal ended prematurely
f"abc {a['x']} def"    # workaround: use different quoting

f"newline: {ord('\n')}"  # raises SyntaxError

Чтобю включить обратную черту в подстановку, следует использовать временную переменную

>>> newline = ord('\n')
>>> f"newline: {newline}"
'newline: 10'

Наконец f-строки нельзя использовать в качестве строк документации, даже если в них нет переменных

[python-standart-library]

Больше про форматирование строк, включая метод format() смотри тут