Вы смешиваете три разных метода преобразования значений в строки. Чтобы использовать заполнители {..}, используйте метод str.format(), непосредственно в строковом литерале, который является шаблоном:
Нет необходимости использовать функции str() или format(), и вам не нужно использовать %.
Функция format() превращает объекты в строку, используя мини-язык спецификации формата , тот же язык, который позволяет отформатировать значения в str.format() placeholder. Это часть форматирования языка шаблона, доступная как отдельная функция.
str() превращает объект в строку без специальное форматирование. Вы всегда получите тот же результат. Поскольку str.format() уже преобразовывает объекты в строки (но с элементами управления форматированием ), вам не нужно использовать это. И если вам это нужно в любом случае (потому что, скажем, вы хотите применить элементы управления форматированием string , а не те, которые принадлежат другому типу объекта), str.format() имеет !s конверсии.
Применение % к строковому объекту дает вам другую операцию форматирования строк, называемую форматированием printf. Этот метод гораздо менее гибкий, чем версия str.format().
Если вы используете Python 3.6 или новее, я рекомендую использовать более быстрое форматирование f-string строковые литералы:
Вы смешиваете три разных метода преобразования значений в строки. Чтобы использовать заполнители
{..}
, используйте методstr.format()
, непосредственно в строковом литерале, который является шаблоном:Нет необходимости использовать функции
str()
илиformat()
, и вам не нужно использовать%
.Функция
format()
превращает объекты в строку, используя мини-язык спецификации формата , тот же язык, который позволяет отформатировать значения вstr.format()
placeholder. Это часть форматирования языка шаблона, доступная как отдельная функция.str()
превращает объект в строку без специальное форматирование. Вы всегда получите тот же результат. Посколькуstr.format()
уже преобразовывает объекты в строки (но с элементами управления форматированием ), вам не нужно использовать это. И если вам это нужно в любом случае (потому что, скажем, вы хотите применить элементы управления форматированием string , а не те, которые принадлежат другому типу объекта),str.format()
имеет!s
конверсии.Применение
%
к строковому объекту дает вам другую операцию форматирования строк, называемую форматированиемprintf
. Этот метод гораздо менее гибкий, чем версияstr.format()
.Если вы используете Python 3.6 или новее, я рекомендую использовать более быстрое форматирование f-string строковые литералы:
Вы должны вызвать метод
.format
в строке. Точно так же: