Простое руководство по форматированию строк в 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 перед символом ‘’, используемым для создания обычных строк. Кроме того, чтобы вставить переменную в строку, следует еще добавить символ {}.

age = 20
python_version = 3.8

>>> print(f'Your age is {age}')
Your age is 20

>>> print(f'python_version={python_version}')
python_version=3.8

Как видите, использовать f-строки для добавления переменных проще, чем обычные строки и оператор +.

F-строки также облегчают отладку. Вместо того, чтобы писать имя переменной и ее значение, как мы делали ранее для python_version, можно записать внутри только f-строки: {variable_name=}.

age = 20
python_version = 3.8

>>> print(f'{age=}')
age=20

>>> print(f'{python_version=}')
python_version=3.8

Теперь перейдем к более продвинутому уровню форматирования. В следующих разделах будем использовать приведенный ниже синтаксис.

Syntax: {:[width][.precision][type]}

Type:
d: integers (целочисленные типы)
f: floating point numbers (числа с плавающей точкой)
*Точность (precision) указывается только при использовании чисел с плавающей точкой

Выравнивание

Необходимость выровнять слово/текст вправо или влево возникает в редких случаях. Тем не менее выравнивание  —  это основа для понимания того, как добавлять нули слева/справа к числам, что очень полезно при форматировании чисел.

Выравнивание справа

Предположим, что нам необходимо выровнять числа справа. Можно сделать это, используя вышеприведенный синтаксис, добавив к нему только элемент width.

Если нужно сделать 6 пробелов и выровнять текст справа, следует добавить width со значением 8 (по умолчанию текст выравнивается справа).

number = 20

>>> print(f'{number}')
20

>>> print(f'{number:8}')
      20

>>> print(f'{number:>8}')
      20

Для большей степени конкретизации добавьте символ >, который указывает, что текст должен быть выровнен справа.

Выравнивание слева

Теперь выровняем текст слева, используя _ в качестве символа-заполнителя.

number = 20

>>> print(f'{number:<8}')
20  

>>> print(f'{number:_<8}')
20______
    

Чтобы закрепить width со значением 8, добавим 6 _, используя приведенный выше код.

Заполнение нулями

Пришло время использовать знания из предыдущего раздела для форматирования чисел путем заполнения их нулями слева/справа.

Заполнение нулями справа

Как демонстрировалось ранее, для форматирования строк в Python 3.6 используются символы-заполнители. В данном случае выберем 0 в качестве символа-заполнителя, чтобы указать, что в числе с плавающей точкой 5 десятичных знаков.

x = 20.123

>>> print(f'{x:0<8}')
20.12300

Иногда использование width усложняет ситуацию: приходится вычислять окончательное значение width числа после добавления 0.

Проще подумать о необходимом количестве десятичных знаков.

Сделаем это с помощью .precision на основе синтаксиса, показанного выше. Добавляем 0 до тех пор, пока в числе не будет 5 десятичных знаков.

>>> print(f'{x:.5f}')
20.12300

В приведенном выше коде 5 означает точность, а f  —  число с плавающей точкой.

Заполнение нулями слева

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

Допустим, что нам нужно получить следующий формат: YYYYMMDD с использованием регулярных чисел 1–9. В этом случае нужно добавить 0 слева от месяца (month) и дня (day).

Вот 2 способа сделать это с помощью f-строк:

year = 2022
month = 1
day = 5

# YYYYMMDD
>>> print(f'{year}{month:0>2}{day:0>2}')
20220105

>>> print(f'{year}{month:02d}{day:02d}')
20220105

Округление числа с плавающей точкой

Округление до n десятичных знаков

Когда нужно округлить число с плавающей точкой до n десятичных дробей, полезно использовать .precision с f-типом.

Округлим приведенное ниже число до 1 знака после десятичной точки.

x = 20.123

>>> print(f'{x:.1f}')
20.1

Представление плавающих чисел в процентах

Теперь округлим число и добавим знак %.

x = 20.123

>>> print(f'{x:.1f}%')
20.1%

Использование запятой в качестве разделителя тысяч

Можно также добавить , (запятую) в качестве разделителя тысяч.

x = 1000000

>>> print(f'{x:,}')
1,000,000

Форматирование даты

И последнее, но не менее важное: можно импортировать datetime и использовать специальные символы внутри f-строки, чтобы получить правильное форматирование данных.

import datetime

now = datetime.datetime.now()

>>> print(f'Today is {now:%B} {now:%-d}, {now:%Y}')
Today is May 20, 2022

>>> print(f'{now=:%m-%d-%Y}')
now=05-20-2022

Здесь можно найти шпаргалку с большим количеством символов, которые применяются для форматирования переменных даты в Python.

Читайте также:

Читайте нас в TelegramVK и Яндекс.Дзен


Перевод статьи Frank Andrade: A Simple Guide to String Formatting in Python Using f-strings

Предыдущая статьяБиблиотека Ethers.js: новичкам на заметку
Следующая статьяNexus  —  новый визуализатор дерева компонентов для Next.js