Простое руководство по форматированию строк в Python с помощью f-строк
![]()
Если вы изучаете Python уже некоторое время, то, вероятно, используете " " для создания строк. В этом нет ничего плохого. В конце концов, для многих первой строкой кода Python была просто print(“Hello World”) . Однако тому, кто хочет повысить уровень работы на Python, следует использовать f-строки.
F-строки (f-strings) были представлены в Python 3.6 как более совершенный способ форматирования строк. В этом руководстве будет подробно рассказано о том, как форматировать строки в Python с помощью f-строк, как добавлять переменные, разделители-запятые, нули справа/слева, даты и многое другое.
Форматирование
Чтобы следовать этому руководству, убедитесь, что у вас установлен Python 3.6 или выше, иначе f-строки не будут работать.
Простое форматирование
F-строки — идеальный синтаксис для добавления переменных в строки.
Напишем два сообщения на Python с помощью f-строк. Для этого нужно добавить литерал f перед символом ‘’ , используемым для создания обычных строк. Кроме того, чтобы вставить переменную в строку, следует еще добавить символ <> .
Как видите, использовать f-строки для добавления переменных проще, чем обычные строки и оператор + .
F-строки также облегчают отладку. Вместо того, чтобы писать имя переменной и ее значение, как мы делали ранее для python_version , можно записать внутри только f-строки:
Теперь перейдем к более продвинутому уровню форматирования. В следующих разделах будем использовать приведенный ниже синтаксис.
Выравнивание
Необходимость выровнять слово/текст вправо или влево возникает в редких случаях. Тем не менее выравнивание — это основа для понимания того, как добавлять нули слева/справа к числам, что очень полезно при форматировании чисел.
Выравнивание справа
Предположим, что нам необходимо выровнять числа справа. Можно сделать это, используя вышеприведенный синтаксис, добавив к нему только элемент width .
Если нужно сделать 6 пробелов и выровнять текст справа, следует добавить width со значением 8 (по умолчанию текст выравнивается справа).
Для большей степени конкретизации добавьте символ > , который указывает, что текст должен быть выровнен справа.
Выравнивание слева
Теперь выровняем текст слева, используя _ в качестве символа-заполнителя.
Чтобы закрепить width со значением 8 , добавим 6 _ , используя приведенный выше код.
Заполнение нулями
Пришло время использовать знания из предыдущего раздела для форматирования чисел путем заполнения их нулями слева/справа.
Заполнение нулями справа
Как демонстрировалось ранее, для форматирования строк в Python 3.6 используются символы-заполнители. В данном случае выберем 0 в качестве символа-заполнителя, чтобы указать, что в числе с плавающей точкой 5 десятичных знаков.
Иногда использование width усложняет ситуацию: приходится вычислять окончательное значение width числа после добавления 0 .
Проще подумать о необходимом количестве десятичных знаков.
Сделаем это с помощью .precision на основе синтаксиса, показанного выше. Добавляем 0 до тех пор, пока в числе не будет 5 десятичных знаков.
В приведенном выше коде 5 означает точность, а f — число с плавающей точкой.
Заполнение нулями слева
Теперь будем добавлять 0 слева. Это очень полезно, когда нужно создавать пользовательские форматы с использованием чисел.
Допустим, что нам нужно получить следующий формат: YYYYMMDD с использованием регулярных чисел 1–9. В этом случае нужно добавить 0 слева от месяца (month) и дня (day).
Вот 2 способа сделать это с помощью f-строк:
Округление числа с плавающей точкой
Округление до n десятичных знаков
Когда нужно округлить число с плавающей точкой до n десятичных дробей, полезно использовать .precision с f -типом.
Округлим приведенное ниже число до 1 знака после десятичной точки.
Представление плавающих чисел в процентах
Теперь округлим число и добавим знак % .
Использование запятой в качестве разделителя тысяч
Можно также добавить , (запятую) в качестве разделителя тысяч.
Форматирование даты
И последнее, но не менее важное: можно импортировать datetime и использовать специальные символы внутри f-строки, чтобы получить правильное форматирование данных.
Здесь можно найти шпаргалку с большим количеством символов, которые применяются для форматирования переменных даты в Python.
Перенос f-string по PEP
Решил следить за написанием своего кода и столкнулся с проблемой, как правильно делать перенос строк и выражений в Python.
Как делать перенос строки (не превышало 79 символов) при этом в консоли вывод должен быть в одну строку. Заранее извиняюсь за столь глупый вопрос)
Почему бы не обратиться к первоисточнику:
The preferred way of wrapping long lines is by using Python’s implied line continuation inside parentheses, brackets and braces. Long lines can be broken over multiple lines by wrapping expressions in parentheses. These should be used in preference to using a backslash for line continuation.
Предпочтительный способ обертывания длинных строк — использование подразумеваемого продолжения строки Python внутри скобок, скобок и фигурных скобок. Длинные строки можно разбить на несколько строк, заключив выражения в круглые скобки. Их следует использовать вместо использования обратной косой черты для продолжения строки.
PS кроме соответствия стандартам PEP-8, код должен быть легко-читаемым. Поэтому я разбил строки таким образом.
F-Строки: Новый улучшенный способ форматирования строк в Python

У нас для вас хорошие новости: f-строки вступают в дело, чтобы помочь с форматированием. Также известные как «форматированные строковые литералы», f-strings являются строковыми литералами с «f» в начале и фигурные скобки, содержащие выражения, которые в дальнейшем будут заменены своими значениями. Выражения оцениваются по мере выполнения и затем форматируются при помощи протокола __format__ . Как всегда, документация Python может помочь, если хотите узнать больше.
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Telegram Чат & Канал
Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!
Паблик VK
Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!
Рассмотрим подробнее, как именно f-strings могут упростить вам жизнь.
Простой синтаксис
Синтаксис аналогичен тому, который вы используете в str.format(), но не такой перегруженный. Посмотрите на эту читабельность:
Вы также можете использовать заглавную букву F:
Вам уже нравится? Надеемся, что да, в любом случае, вы будете в восторге к концу статьи.
Произвольные выражения
Так как f-строки оцениваются по мере выражения, вы можете внести любую или все доступные выражения Python в них. Это позволит вам делать интересные вещи, например следующее:
Также вы можете вызывать функции. Пример:
Также вы можете вызывать метод напрямую:
Вы даже можете использовать объекты, созданные из классов при помощи f-строки. Представим, что у вас есть следующий класс:
Вы могли бы сделать следующее:
Методы __str__() и __repr__() работают с тем, как объекты отображаются в качестве строк, так что вам нужно убедиться в том, что вы используете один из этих методов в вашем определении класса. Если вы хотите выбрать один, попробуйте __repr__(), так как его можно использовать вместо __str__().
Строка, которая возвращается __str__() является неформальным строковым представлением объекта и должна быть читаемой. Строка, которую вернул __str__() — это официальное выражение и должно быть однозначным. При вызове str() и repr(), предпочтительнее использовать __str__() и __repr__() напрямую.
По умолчанию, f-строки будут использовать __str__(), но вы должны убедиться в том, что они используют __repr__(), если вы включаете флаг преобразования !r:
Если вы хотите прочитать часть обсуждения, в результате которого f-strings поддерживают полные выражения Python, вы можете сделать это здесь.
Многострочные F-Strings
У вас могут быть многострочные f-strings:
Однако помните о том, что вам нужно разместить f вначале каждой строки. Следующий код не будет работать:
Если вы не внесете f в начале каждой индивидуальной строки, то получите обычную, старую версию строк, без приятных новшеств.
Если вы хотите размножить строки по нескольким линиям, у вас также есть возможность избежать возвратов при помощи \:
Но вот что произойдет, если вы используете «»»:
Инструкция по отступам доступна в PEP 8.
Скорость
Буква f в f-strings может также означать и “fast”. Наши f-строки заметно быстрее чем % и str.format() форматирования. Как мы уже видели, f-строки являются выражениями, которые оцениваются по мере выполнения, а не постоянные значения. Вот выдержка из документации:
“F-Строки предоставляют способ встраивания выражений внутри строковых литералов с минимальным синтаксисом. Стоит обратить внимание на то, что f-строка является выражением, которое оценивается по мере выполнения, а не постоянным значением. В исходном коде Python f-строки является литеральной строкой с префиксом f, которая содержит выражения внутри скобок. Выражения заменяются их значением.”
Во время выполнения, выражение внутри фигурных скобок оценивается в собственной области видимости Python и затем сопоставляется со строковой литеральной частью f-строки. После этого возвращается итоговая строка. В целом, это все.
Python f-strings¶
All currently supported Python versions (3.6+) support string-formatting via f-strings. While PEP 498 (Literal String Interpolation) as well as the Python documention (tutorial, syntax reference) have some information on their usage, I was missing a reference which is terse, but still verbose enough to explain the syntax.
Thus, fstring.help was born, made with and
(initially as a quick hack at PyConDE 2022).
Some content is copied verbatim from pyformat.info (Copyright 2015 Ulrich Petri, Horst Gutmann). Thanks!
Cheat sheet tables can be found at fstring.help/cheat thanks to Trey Hunner.
Repository on Github, contributions welcome! If you prefer an interactive version, .
Basic formatting¶
f-strings are strings with an f in front of them: f». » or f’. ‘ . Inside the f-string, curly braces can be used to format values into it: