- Функция format() в Python
- Примеры
- Простое форматирование на основе индекса
- Последовательности, как аргумент format()
- Аргументы ключевого слова
- Словарь, как аргумент
- Доступ к атрибутам объекта для замены поля
- Форматированная строка с отступом и выравниванием
- Форматирование с числами
- Указание знака (+, -) для форматированной строки
- Форматировать целые числа по разным основаниям
- format() с комплексным числом
- Форматирование чисел с использованием запятой в качестве разделителя тысяч
- Процент, заполнение и округление
- Вызов функций str() и repr()
Функция format() в Python
Функция format() в Python используется для создания форматированной строки из строки шаблона и предоставленных значений.
- Строка шаблона может быть строковым литералом или содержать замещающие поля с использованием <> в качестве разделителя.
- Поле замены может быть числовым индексом предоставленных аргументов или они могут быть аргументами на основе ключевых слов.
- Если замещающие поля не имеют индекса или значения ключевого слова, то они заменяются на основе индекса и в порядке, т.е. 0,1,…, n.
- Мы можем предоставить такие последовательности, как кортеж и список, в качестве аргумента для замены на основе индекса.
- Мы можем предоставить словарь в качестве аргумента для замены на основе ключевых слов.
- Аргумент функции форматирования также может быть объектом, мы можем получить доступ к его атрибутам, используя оператор точки для поля замены.
- Мы можем создать строку заданной длины с помощью функции format() с выравниванием строкового литерала вправо, влево или по центру. Мы также можем указать символ, который будет использоваться для заполнения, по умолчанию – пробел.
- Функция format() предоставляет множество возможностей для форматирования чисел. Например, базовое преобразование из десятичного числа в восьмеричное, шестнадцатеричное и т.д. Мы также можем выполнять проценты, заполнение и т.д.
- Существуют быстрые способы вызова функций __str __() и __repr __() для аргумента с использованием !S и !R.
Примеры
Давайте посмотрим на несколько примеров использования функции format().
Простое форматирование на основе индекса
print("My Name is ".format("Pankaj")) print("I like and ".format("Java", "Python")) # same as above print("I like <> and <>".format("Java", "Python")) # index can be in any order print("I like and ".format("Java", "Python"))
My Name is Pankaj I like Java and Python I like Java and Python I like Python and Java
Последовательности, как аргумент format()
# unpacking from sequences t = ("Java", "Python") print("I like and ".format(*t)) l = ["Java", "Python"] print("I like <> and <>".format(*t))
I like Python and Java I like Java and Python
Аргументы ключевого слова
print(" is the of ".format(name="Misha", job="CEO", company="pythonim"))
Вывод: Misha is the CEO of pythonim.
Словарь, как аргумент
Мы можем использовать словарь в аргументе функции format() для замены полей на основе ключевых слов.
Вывод: pythonim CEO is Misha
Доступ к атрибутам объекта для замены поля
Мы можем передать объект в методе format() и использовать оператор точки для доступа к его атрибутам для замены поля.
class Data: name = '' def __init__(self, i, n): self.id = i self.name = n dt = Data(1, 'Test') print(" id is and name is ".format(obj_name="Data", obj=dt))
Вывод: Data id is 1 and name is Test.
Форматированная строка с отступом и выравниванием
Мы можем создать строку указанной длины, используя метод format(). По умолчанию он будет выровнен по левому краю, а пробелы будут использоваться для заполнения. Однако мы можем указать символ, который будет использоваться для заполнения и выравнивания исходной строки.
>>> "".format("data center aligned") ' data center aligned ' >>> "".format("data without align") 'data without align ' >>> "".format("data left aligned") 'data left aligned ' >>> "30>".format("data right aligned") ' data right aligned' >>> "".format("data center aligned") ' data center aligned ' >>> "".format("data with fill character") '|||data with fill character|||'
В этом примере я использую консоль Python, чтобы вы могли видеть заполнение строк пробелами. Если мы используем здесь функцию print(), кавычки вокруг строки не будут отображаться, а длина строки будет нечеткой.
Форматирование с числами
Существует множество вариантов форматирования чисел, давайте рассмотрим некоторые из них.
Указание знака (+, -) для форматированной строки
print('; '.format(1.23, -1.23)) print('; '.format(1.23, -1.23)) print('; '.format(1.23, -1.23))
+1.230000; -1.230000 1.230000; -1.230000 1.230000; -1.230000
Обратите внимание, что во втором операторе пробел используется, как префикс для числа. Для отрицательных чисел всегда используется знак минус (-).
Форматировать целые числа по разным основаниям
Мы можем легко преобразовать int в различные базы, такие как шестнадцатеричные, восьмеричные, двоичные и т.д. Мы также можем указать, будет ли форматированная строка содержать префиксы для базы или нет.
print("int: ; hex: ; oct: ; bin: ".format(28)) print("int: ; hex: ; oct: ; bin: ".format(0x1c)) print("int: ; hex: ; oct: ; bin: ".format(28))
int: 28; hex: 1c; oct: 34; bin: 11100 int: 28; hex: 1c; oct: 34; bin: 11100 int: 28; hex: 0x1c; oct: 0o34; bin: 0b11100
format() с комплексным числом
complex_number = 4 + 2j print("Real: , Imaginary: ".format(complex_number))
Выход: Реальный: 4,0, Мнимый: 2,0. Это похоже на доступ к атрибутам объекта.
Форматирование чисел с использованием запятой в качестве разделителя тысяч
Процент, заполнение и округление
print('Percentage: '.format(19 / 28)) print(''.format(2.344)) print(''.format(22222.346))
Percentage: 67.857% 2.34 22222.35
Обратите внимание, что округление после десятичных знаков выполняется в соответствии с правилами округления по умолчанию. Также перед числом делается отступ.
Вызов функций str() и repr()
Мы можем легко вызвать функции str() и repr() для объекта, используя !S и !R соответственно.
print("With Quotes: , Without Quotes: ".format("Data")) class Test: def __str__(self): return 'test str' def __repr__(self): return 'test repr' print("Test Representation: , Test String Representation: ".format(Test()))
With Quotes: 'Data', Without Quotes: Data Test Representation: test repr, Test String Representation: test str
Метод format() очень эффективен при создании строки из различных источников входных данных и применении правил форматирования. Это намного лучше, чем предыдущее форматирование на основе % и строки шаблона.