Если вы изучаете 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.
Читайте также:
- Отправляем E-mail с помощью Python
- Как легко и надежно реализовать модульные тесты на Python
- Шпаргалка по регулярным выражениям. В примерах
Читайте нас в Telegram, VK и Яндекс.Дзен
Перевод статьи Frank Andrade: A Simple Guide to String Formatting in Python Using f-strings