Что такое форматирование строк в python
Способы форматирования текстовых строк в Python.
Форматирование строки для печати или логирования.
Часто вам требуется больший контроль над форматированием вывода, чем просто печать значений, разделенных пробелами. Есть несколько способов форматирования вывода:
Форматирование f-строками.
Форматированные строковые литералы, также называемые «f-строками» для краткости, позволяют включать значение выражений Python в строку, добавляя префикс к строке ‘f’ или ‘F’ и записывая выражения внутри строки как
Необязательный спецификатор формата Mini-Language может следовать за выражением. Это позволяет лучше контролировать форматирование значения. Следующий пример округляет число до десяти после десятичного числа:
Передача целого числа после ‘:’ символа приведет к минимальному количеству символов в этом поле. Это полезно для выравнивания столбцов.
Основное использование str.format() метода выглядит следующим образом:
Если в методе str.format() используются ключевые аргументы, на их значения ссылается имя аргумента.
Если строка формата очень длинная, которую не хотите разделять, было бы неплохо, если бы вы могли ссылаться на переменные, которые должны быть отформатированы по имени, а не по позиции. Это можно сделать, передавая словарь dict и используя квадратные скобки ‘[]’ для доступа к ключам.
Как пример, следующий код производит аккуратно выровненный набор столбцов, дающих целые числа и их квадраты и кубы:
Дополнительную информацию по данному способу форматирования можно найти в разделе «Форматирование строк в стиле printf «.
Функция format() в Python
Функция format() в Python используется для создания форматированной строки из строки шаблона и предоставленных значений.
Примеры
Давайте посмотрим на несколько примеров использования функции format().
Простое форматирование на основе индекса
Последовательности, как аргумент format()
Аргументы ключевого слова
Вывод: Misha is the CEO of pythonim.
Словарь, как аргумент
Мы можем использовать словарь в аргументе функции format() для замены полей на основе ключевых слов.
Вывод: pythonim CEO is Misha
Доступ к атрибутам объекта для замены поля
Мы можем передать объект в методе format() и использовать оператор точки для доступа к его атрибутам для замены поля.
Вывод: Data id is 1 and name is Test.
Форматированная строка с отступом и выравниванием
Мы можем создать строку указанной длины, используя метод format(). По умолчанию он будет выровнен по левому краю, а пробелы будут использоваться для заполнения. Однако мы можем указать символ, который будет использоваться для заполнения и выравнивания исходной строки.
В этом примере я использую консоль Python, чтобы вы могли видеть заполнение строк пробелами. Если мы используем здесь функцию print(), кавычки вокруг строки не будут отображаться, а длина строки будет нечеткой.
Форматирование с числами
Существует множество вариантов форматирования чисел, давайте рассмотрим некоторые из них.
Обратите внимание, что во втором операторе пробел используется, как префикс для числа. Для отрицательных чисел всегда используется знак минус (-).
Форматировать целые числа по разным основаниям
Мы можем легко преобразовать int в различные базы, такие как шестнадцатеричные, восьмеричные, двоичные и т.д. Мы также можем указать, будет ли форматированная строка содержать префиксы для базы или нет.
format() с комплексным числом
Выход: Реальный: 4,0, Мнимый: 2,0. Это похоже на доступ к атрибутам объекта.
Форматирование чисел с использованием запятой в качестве разделителя тысяч
Процент, заполнение и округление
Обратите внимание, что округление после десятичных знаков выполняется в соответствии с правилами округления по умолчанию. Также перед числом делается отступ.
Вызов функций str() и repr()
Метод format() очень эффективен при создании строки из различных источников входных данных и применении правил форматирования. Это намного лучше, чем предыдущее форматирование на основе % и строки шаблона.
Форматирование строк в Python: format() и f-строки
Но для начала давайте посмотрим, что считается «старым способом» форматирования.
Что такое форматирование строк в Python с помощью %?
Вот основной синтаксис данного оператора:
Что такое метод str.format() в Python?
Вот основной синтаксис данного метода:
В этом примере мы хотим напечатать «Hello, my name is Jessica. I am a musician turned programmer.»
Таким образом, целиком наш код будет выглядеть так:
Марк Лутц «Изучаем Python»
Скачивайте книгу у нас в телеграм
Позиционные аргументы
Также можно получить доступ к значению аргументов, используя в фигурных скобках индексы.
Мы можем получить доступ к этим значениям внутри строки, обратившись к ним по индексам. <0>относится к первому аргументу ( «trumpet» ), а <1>— ко второму ( «drums» ).
Вот наш полный код и предложение, которое будет выведено на экран:
Мы можем изменить этот пример и поменять местами номера индексов в строке. Вы заметите, что предложение изменилось, так как расположение аргументов поменялось.
Именованные аргументы
Эти аргументы состоят из пары «ключ-значение». Мы можем получить доступ к значению аргумента, используя ключ внутри фигурных скобок.
Целиком наш код будет выглядеть следующим образом:
Как смешивать именованные и позиционные аргументы
В str.format() вы можете использовать и именованные, и позиционные аргументы одновременно.
В этом примере мы собираемся написать небольшой рассказ о поездке в Диснейленд.
Сначала мы создадим несколько переменных для имени, числа, прилагательного и аттракциона Диснейленда.
Полностью наш код выглядит так:
Запустив его, мы получим следующий результат:
Что такое f-строки?
Вот так выглядит основной синтаксис:
Если мы вместо строчной f напишем заглавную, то всё будет работать точно так же.
Результаты последних двух примеров абсолютно идентичны:
Вы также можете использовать f-строку для форматирования данных из словаря.
Давайте рассмотрим следующий пример. У нас есть словарь. В нем представлены лучшие позиции мужских баскетбольных команд колледжей и количество выигранных ими игр из возможных 32.
Внутри цикла for мы можем использовать f-строку для форматирования выводимых результатов.
Использование двоеточия в
Буква d внутри < score: 10d>обозначает десятичное целое число.
Соберем наш код и получим следующую программу:
Теперь давайте запустим её. Вот, что у нас получится:
Что такое «шаблонные» строки?
«Шаблонные» строки – это строки в Python, которые используют плейсхолдеры для реальных значений.
Вот основной синтаксис такой строки:
Давайте рассмотрим пример, чтобы лучше понять, как это работает.
Таким образом, мы получили следующий код:
Заключение
Форматирование строк в Python можно осуществлять по-разному.
Этот метод часто называют старым, потому что Python 3 представил метод str.format() и f-строки.
В методе str.format() вы используете фигурные скобки для плейсхолдеров и круглые — для реальных значений. Этот метод может принимать именованные и позиционные аргументы.
«template string <>«.format(arguments)
Вы также можете использовать шаблонные строки, импортировав класс Template из стандартной библиотеки. Шаблонные строки – это строки Python, которые используют плейсхолдеры для реальных значений.
Мы надеемся, что эта статья оказалась для вас полезной, и желаем удачи в вашем путешествии в мире Python!
Форматирование в Python с помощью format()
Строковый метод format() форматирует строки python для более красивого вывода.
Здесь p0, p1. — это позиционные аргументы, а k0, k1. — аргументы-ключевые слова со значениями v0, v1. соответственно.
А template — это набор строк с заполнителями для аргументов.
Параметры format()
Метод format() принимает любое количество параметров. Но они делятся на два вида:
Возвращаемое значение format()
Метода format() возвращает отформатированную строку.
Как работает format()?
Формат читает тип переданных аргументов и форматирует строку в соответствии с кодами форматирования в строке.
Для позиционных аргументов
Здесь Аргумент 0 — это строка “Adam”, а Аргумент 1 — число с плавающей точкой 230.2346.
Список аргументов в Python начинается с 0.
Строка Hello <0>, your balance is <1:9.3f>— это шаблон строки. Он содержит коды форматирования.
Поскольку шаблон строки ссылается на аргументы format() ( <0>и <1>), они являются позиционными аргумента. На них можно ссылаться без использования чисел, а Python конвертирует <> в числа автоматически.
Для аргументов-ключевых слов
В этом примере используется то же выражение, чтобы продемонстрировать разницу в использовании позиционных и аргументов-ключевых слов.
Поскольку ссылка на эти параметры происходит через ключи (
Что происходит внутри:
Базовое форматирование с format()
Метод format() позволяет использовать простые заполнители для форматирования.
Пример №1: базовое форматирование для аргументов по умолчанию, позиционных и аргументов-ключевых слов.
При запуске программы вывод будет одинаковым:
При использовании смешанных аргументов аргументы-ключевые слова должны идти после позиционных аргументов.
Форматирование чисел с format()
С помощью спецификаторов формата можно форматировать и числа:
Типы форматирования чисел
Пример №2: простое форматирование чисел.
При запуске этой программы вывод будет следующий:
Пример №3: форматирование чисел с полями для целых и чисел с плавающей точкой.
Эта программа выдаст следующее:
Пример №4: форматирование чисел со знаками.
Вывод будет следующий:
Форматирование чисел с выравниванием
Форматирование чисел с выравниванием
Пример №5: форматирование чисел с выравниванием по центру, левому и правому краю.
Вывод этой программы:
Выравнивание по левому краю с нулями для целых чисел может создать проблемы, как в случае с третьим примером, который возвращает 12000 вместо 12.
Форматирование строк с format()
Пример №6: форматирование строк с полями и выравниванием.
При запуске программы вывод будет следующим:
Пример №7: обрезание строк.
Вывод будет следующим:
Форматирование элементов классов и словарей с format()
Python использует getattr() для элементов класса в форме “.age”. А __getitem__() — для элементов словаря в форме “[index]”.
Пример №8: форматирование элементов класса с format().
Вывод этой программы:
Пример №9: форматирование элементов словаря с format().
* — это параметр формата (минимальная ширина поля).
Аргументы как параметры в format()
Параметры, такие как точность, выравнивание или символы заполнения можно передавать в качестве позиционных аргументов-ключевых слов.
Пример №10: динамическое форматирование.
Дополнительные параметры форматирования с format()
format() также поддерживает форматирования по типам, например, для datetime или форматирование сложных чисел. Он внутренне вызывает __format__() для datetime и получает доступ к атрибутам сложных чисел.
Можно запросто переопределить метод __format__() для любого объекта для создания собственного форматирования.
Пример №11: форматирование по типу с format() и переопределение метода _format().
Как и __format__() можно запросто переопределять метода __str__() и __repr__() объекта.
Форматирование строк¶
При работе со строками часто возникают ситуации, когда в шаблон строки надо подставить разные данные.
Это можно делать объединяя, части строки и данные, но в Python есть более удобный способ — форматирование строк.
Форматирование строк может помочь, например, в таких ситуациях:
Существует несколько вариантов форматирования строк:
Форматирование строк с методом format¶
Пример использования метода format:
Специальный символ <> указывает, что сюда подставится значение, которое передается методу format. При этом каждая пара фигурных скобок обозначает одно место для подстановки.
Значения, которые подставляются в фигурные скобки, могут быть разного типа. Например, это может быть строка, число или список:
С помощью форматирования строк можно выводить результат столбцами. В форматировании строк можно указывать, какое количество символов выделено на данные. Если количество символов в данных меньше, чем выделенное количество символов, недостающие символы заполняются пробелами.
Например, таким образом можно вывести данные столбцами одинаковой ширины по 15 символов с выравниванием по правой стороне:
Выравнивание по левой стороне:
Шаблон для вывода может быть и многострочным:
С помощью форматирования строк можно также влиять на отображение чисел.
Например, можно указать, сколько цифр после запятой выводить:
С помощью форматирования строк можно конвертировать числа в двоичный формат:
При этом по-прежнему можно указывать дополнительные параметры, например, ширину столбца:
А также можно указать, что надо дополнить числа нулями, вместо пробелов:
В фигурных скобках можно указывать имена. Это позволяет передавать аргументы в любом порядке, а также делает шаблон более понятным:
За счет этого, например, можно избавиться от повторной передачи одних и тех же значений:
Указав индексы значений, которые передаются методу format, можно избавиться от дублирования:
Форматирование строк с помощью f-строк¶
Во многих ситуациях f-строки удобней и проще использовать, чем format, кроме того, f-строки работают быстрее, чем format и другие методы форматирования строк.
Синтаксис¶
F-строки — это литерал строки с буквой f перед ним. Внутри f-строки в паре фигурных скобок указываются имена переменных, которые надо подставить:
Очень важное отличие f-строк от format: f-строки — это выражение, которое выполняется, а не просто строка. То есть, в случае с ipython, как только мы написали выражение и нажали Enter, оно выполнилось и вместо выражений
Поэтому, например, нельзя сначала написать шаблон, а затем определить переменные, которые используются в шаблоне:
Кроме подстановки значений переменных, в фигурных скобках можно писать выражения:
После двоеточия в f-строках можно указывать те же значения, что и при использовании format:
Так как для полноценного объяснения f-строк, надо показывать примеры с циклами и работой с объектами, которые еще не рассматривались, это тема также есть в разделе Форматирование строк с помощью f-строк с дополнительными примерами и пояснениями.

