Python Glossary English

Python 3.14+Строки (str)конструкция

t-строки

форматирование

t'...' выглядит как f-строка, но даёт объект Template, а не str: части текста и подставленные значения хранятся раздельно (Python 3.14+).

Синтаксис

t'текст {выражение}'
T"текст {выражение!r:формат}"

Главная ловушка: t-строка — не str. Она не равна строке с тем же текстом (сравнение даёт False) и не склеивается со str через + (TypeError), а str(tpl) даёт repr шаблона, а не готовый текст. Собирает строку ваш код: перебирает шаблон, получая куски текста и объекты Interpolation, и, например, экранирует значения для HTML или SQL. Нужна просто строка — берите f-строку.

Примеры

# Python 3.14+
name = 'Bob'
tpl = t'Hi {name}!'
print(type(tpl).__name__)  # → Template
print(tpl.strings, tpl.values)  # → ('Hi ', '!') ('Bob',)
print(tpl == 'Hi Bob!')  # → False
print(str(tpl)[:9])  # → Template( — repr шаблона, а не текст
tpl + '?'  # → TypeError
# Python 3.14+
from string.templatelib import Interpolation
name = '<b>'
tpl = t'Hi {name}!'
parts = []
for part in tpl:
    if isinstance(part, Interpolation):
        part = str(part.value).replace('<', '&lt;').replace('>', '&gt;')
    parts.append(part)
print(''.join(parts))  # → Hi &lt;b&gt;!

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности