Перейти к основному содержимому

Форматирование строк в Python

В Python 3.6 появились f-строки, и теперь это предпочтительный способ форматирования текста.

В более ранних версиях эту роль выполнял метод format().


F-строки

F-строка позволяет управлять форматированием выбранных частей строки.

Для этого достаточно написать f прямо перед строковым литералом:

Пример

Первая, очень простая f-строка:

Prompt
Напишите программу на Python, которая создаёт f-строку. Создайте простую f-строку с текстом «Цена составляет 49 долларов» и выведите её.
Вывод: полная программа на Python

Заполнители и модификаторы

Значения попадают в f-строку через заполнители, которые записываются как {}. Заполнитель может содержать переменные, операции и функции.

Он также может содержать модификатор, который определяет, как выглядит значение.

Модификатор пишется после двоеточия : с указанием допустимого типа форматирования. Например, .2f означает число с фиксированной точкой и 2 знаками после запятой:

Пример

Поместите переменную price в заполнитель:

Prompt
Напишите программу на Python, использующую заполнители f-строки. Создайте переменную price со значением 59 и выведите её в f-строке.
Вывод: полная программа на Python

Пример

Выведите ту же цену с 2 знаками после запятой:

Prompt
Напишите программу на Python, использующую f-строку с модификатором .2f. Выведите цену 59 с 2 знаками после запятой.
Вывод: полная программа на Python

Заполнители и модификаторы

Значение не обязательно хранить в переменной. Его можно отформатировать прямо в заполнителе:

Пример

Отформатируйте число 95 с 2 знаками после запятой:

Prompt
Напишите программу на Python, которая форматирует значение прямо в f-строке. Выведите значение 95 с 2 знаками после запятой, не используя переменную.
Вывод: полная программа на Python

Операции в f-строках

Заполнители могут также выполнять операции Python. Это простые вычисления, вычисления с переменными и даже конструкции if...else, как показывают следующие три примера:

Пример

Перемножьте два числа внутри заполнителя и выведите ответ:

Prompt
Напишите программу на Python, которая выполняет математическую операцию внутри заполнителя f-строки. Умножьте 20 * 59 прямо в заполнителе.
Вывод: полная программа на Python

Пример

Вычислите цену с учётом налога прямо в заполнителе:

Prompt
Напишите программу на Python, которая добавляет налог в f-строке. Присвойте price значение 59, tax — 0.25, и выведите цену с учётом налога.
Вывод: полная программа на Python

Пример

Выведите «Expensive», если цена больше 50, и «Cheap» в любом другом случае:

Prompt
Напишите программу на Python с if/else внутри f-строки. Присвойте price значение 49 и выведите «дорого», если цена больше 50, иначе «дёшево».
Вывод: полная программа на Python

Вызов функций в f-строках

Заполнитель может также вызывать функции. Подойдут и встроенные методы Python, и функции, которые вы пишете сами:

Пример

Вызовите строковый метод upper(), чтобы перевести значение в заглавные буквы:

Prompt
Напишите программу на Python, которая выполняет функцию внутри f-строки. Примените метод upper() к "apples" внутри f-строки.
Вывод: полная программа на Python

Пример

Напишите собственную функцию, которая переводит футы в метры, а затем вызовите её в заполнителе:

Prompt
Напишите программу на Python, которая вызывает пользовательскую функцию внутри f-строки. Создайте функцию, которая переводит футы в метры, и используйте её в f-строке.
Вывод: полная программа на Python

Другие модификаторы

Ранее в этом уроке модификатор .2f превращал число в значение с фиксированной точкой и 2 знаками после запятой.

Это лишь один из вариантов, другие модификаторы форматируют значения иначе.

Пример

Добавьте запятую как разделитель тысяч:

Prompt
Напишите программу на Python, которая использует запятую как разделитель тысяч в f-строке. Присвойте price значение 59000 и отформатируйте его с запятыми.
Вывод: полная программа на Python

Метод format() для строк

До Python 3.6 для форматирования строки нужно было вызывать метод format().

Этот метод по-прежнему работает, хотя f-строки выполняются быстрее и являются рекомендуемым выбором.

Остальные примеры на этой странице используют format(), чтобы вы увидели, как он работает.

Он тоже обозначает заполнители фигурными скобками {}, но его синтаксис немного отличается:

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

Пример

Поставьте заполнитель в том месте, где должна появиться цена:

Prompt
Напишите программу на Python, использующую метод format(). Присвойте price значение 49 и с помощью format() вставьте его в строку.
Вывод: полная программа на Python
main.py
txt = "The price is {:.2f} dollars"

Несколько значений

Нужно больше значений? Передайте их все в format():

Затем дайте каждому свой заполнитель:

Пример

Prompt
Напишите программу на Python, использующую format() с несколькими значениями. Отформатируйте количество, номер товара и цену в одну строку.
Вывод: полная программа на Python

Индексы

Число внутри фигурных скобок, например {0}, — это индекс. Он гарантирует, что каждое значение попадёт в нужный заполнитель:

Он также позволяет использовать одно значение несколько раз: просто повторите его индекс:

Пример

Prompt
Напишите программу на Python, использующую format() с индексами. Используйте {0}, {1}, {2}, чтобы поставить значения на нужные места.
Вывод: полная программа на Python

Пример

Prompt
Напишите программу на Python, использующую format() с повторными ссылками по индексу. Сошлитесь на одно и то же значение несколько раз с помощью индексов.
Вывод: полная программа на Python

Именованные индексы

Заполнители могут иметь и имена. Напишите имя между фигурными скобками, как в {carname}, а затем передайте значение под тем же именем при вызове метода, как в txt.format(carname = "Ford"):

Пример

Prompt
Напишите программу на Python, использующую format() с именованными индексами. Используйте в format() именованные параметры, например carname и model.
Вывод: полная программа на Python