Python string format kwargs

Функция format() в Python

Функция format() в Python используется для создания форматированной строки из строки шаблона и предоставленных значений.

  • Строка шаблона может быть строковым литералом или содержать замещающие поля с использованием <> в качестве разделителя.
  • Поле замены может быть числовым индексом предоставленных аргументов или они могут быть аргументами на основе ключевых слов.
  • Если замещающие поля не имеют индекса или значения ключевого слова, то они заменяются на основе индекса и в порядке, т.е. 0,1,…, n.
  • Мы можем предоставить такие последовательности, как кортеж и список, в качестве аргумента для замены на основе индекса.
  • Мы можем предоставить словарь в качестве аргумента для замены на основе ключевых слов.
  • Аргумент функции форматирования также может быть объектом, мы можем получить доступ к его атрибутам, используя оператор точки для поля замены.
  • Мы можем создать строку заданной длины с помощью функции format() с выравниванием строкового литерала вправо, влево или по центру. Мы также можем указать символ, который будет использоваться для заполнения, по умолчанию – пробел.
  • Функция format() предоставляет множество возможностей для форматирования чисел. Например, базовое преобразование из десятичного числа в восьмеричное, шестнадцатеричное и т.д. Мы также можем выполнять проценты, заполнение и т.д.
  • Существуют быстрые способы вызова функций __str __() и __repr __() для аргумента с использованием !S и !R.
Читайте также:  Adding to array list in java

Примеры

Давайте посмотрим на несколько примеров использования функции 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() очень эффективен при создании строки из различных источников входных данных и применении правил форматирования. Это намного лучше, чем предыдущее форматирование на основе % и строки шаблона.

Источник

Оцените статью