Автор оригинала: Pankaj Kumar.
Функция () Python String () используется для создания форматированной строки из строки шаблона и прилагаемых значений.
Формат строки Python ()
Функциональный синтаксис строки Python ():
str.format(*args, **kwargs)
- Строка шаблона может быть строковым литералом, или она может содержать замену поля, используя
{}
как разделитель. - Поле замены может быть числовым индексом предусмотренных аргументов, или они могут быть аргументами на основе ключевых слов.
- Если поля замены не имеют значения или значения ключевого слова или ключевого слова, то они заменяются на основе индекса и в порядке I.e. 0,1, …, n.
- Мы можем предоставить последовательности, такие как кортеж и Список в качестве аргумента для замены на основе индекса.
- Мы можем предоставить Словарь в качестве аргумента для замены на основе ключевых слов.
- Аргумент функциональной функции формата также может быть объектом, мы можем получить доступ к его атрибутам с использованием оператора DOT для замены поля.
- Мы можем создать указанную строку длины с использованием функции формата () со строковым литералом правой, левой или выровненной в центре. Мы также можем указать символ для использования для прокладки, по умолчанию – это белое пространство.
- Функция Формата String () предоставляет множество функций для форматирования чисел. Например, базовое преобразование из десятичных к восьмерированию, шестнадцатеричном и т. Д. Мы также можем выполнить процент, прокладку и т. Д.
- Есть ярлыки для звонка __STR __ () и __REPR __ () функций в аргументе, используя ! S и ! R Отказ
Примеры формата строки Python ()
Давайте посмотрим на некоторые примеры использования функции формата ().
Простое форматирование на основе индекса
print("My Name is {0}".format("Pankaj")) print("I like {0} and {1}".format("Java", "Python")) # same as above print("I like {} and {}".format("Java", "Python")) # index can be in any order print("I like {1} and {0}".format("Java", "Python"))
Выход:
My Name is Pankaj I like Java and Python I like Java and Python I like Python and Java
Последовательности как формат () аргумент
# unpacking from sequences t = ("Java", "Python") print("I like {1} and {0}".format(*t)) l = ["Java", "Python"] print("I like {} and {}".format(*t))
Выход:
I like Python and Java I like Java and Python
Аргументы ключевых слов в формате ()
print("{name} is the {job} of {company}".format(name="Pankaj", job="CEO", company="JournalDev"))
Выход: Pankaj - генеральный директор JouroneDev
Словарь как формат () аргумент
Мы можем использовать словарь в формате () аргументе функции для замены поля на основе ключевых слов.
d = {"name": "Pankaj", "job": "CEO", "company": "JournalDev"} print("{company} {job} is {name}".format(**d))
Выход: Генеральный директор JouroneDev - Pankaj
Доступ к атрибутам объекта для замены поля
Мы можем передавать объект в формате () и использовать оператор DOT для доступа к его атрибутам для замены поля.
class Data: id = 0 name = '' def __init__(self, i, n): self.id = i self.name = n dt = Data(1, 'Test') print("{obj_name} id is {obj.id} and name is {obj.name}".format(obj_name="Data", obj=dt))
Выход: Идентификатор данных 1 и имя тестирует
Форматированная строка с прокладкой и выравниванием
Мы можем создать строку указанной длины, используя метод формата (). По умолчанию его будут выровнены и белые пробелы будут использоваться для прокладки. Однако мы можем указать символ для использования для прокладки и выравнивания для исходной строки.
>>> "{:^30}".format("data center aligned") ' data center aligned ' >>> "{:30}".format("data without align") 'data without align ' >>> "{:<30}".format("data left aligned") 'data left aligned ' >>> "{:>30}".format("data right aligned") ' data right aligned' >>> "{:^30}".format("data center aligned") ' data center aligned ' >>> "{:|^30}".format("data with fill character") '|||data with fill character|||'
Я использую Python Console для этого примера, чтобы вы могли видеть прокладку белых пробелов в строке. Если мы будем использовать функцию Print () здесь, цитаты вокруг строки не будут отображаться, и длина строки не будет понятной.
Формат строки () с числами
Есть много вариантов форматирования цифр, давайте посмотрим на некоторые из них.
Указание знака (+, -) для форматированной строки
print('{:+f}; {:+f}'.format(1.23, -1.23)) print('{: f}; {: f}'.format(1.23, -1.23)) print('{:-f}; {:-f}'.format(1.23, -1.23))
Выход:
+1.230000; -1.230000 1.230000; -1.230000 1.230000; -1.230000
Обратите внимание, что во втором утверждении пробел используется в качестве префикса для числа. Для отрицательных чисел, знак минус (-) используется всегда.
Формат целых чисел разным основаниям
Мы можем легко преобразовать int на разные основания, такие как шестнадцатеричные, восьмеричные, двоичные двоичные и т. Д. Мы также можем указать, будет ли форматированная строка будет содержать префиксы для базы или нет.
print("int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".format(28)) print("int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".format(0x1c)) print("int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}".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
формат () со сложным числом
complex_number = 4 + 2j print("Real: {0.real}, Imaginary: {0.imag}".format(complex_number))
Выход: Real: 4.0, воображаемый: 2.0
Это просто как доступ к атрибутам объекта.
Номера форматирования с использованием запятой в качестве тысяч сепаратор
print('{:,}'.format(1234567890))
Выход: 1,234 567 890
Процент, прокладки и округление
print('Percentage: {:.3%}'.format(19 / 28)) print('{0:7.2f}'.format(2.344)) print('{0:10.2f}'.format(22222.346))
Выход:
Percentage: 67.857% 2.34 22222.35
Обратите внимание, что округление после десятичных знаков выполняется в соответствии с правилами округления по умолчанию. Кроме того, прокладка выполняется перед числом.
Функции STR () и ROP ()
Мы можем легко вызовить функции STR () и ROP () для объекта, используя ! S
и ! R
соответственно.
print("With Quotes: {0!r}, Without Quotes: {0!s}".format("Data")) class Test: def __str__(self): return 'test str' def __repr__(self): return 'test repr' print("Test Representation: {0!r}, Test String Representation: {0!s}".format(Test()))
Выход:
With Quotes: 'Data', Without Quotes: Data Test Representation: test repr, Test String Representation: test str
Резюме
Формат String () Python String () очень мощный при создании строки из различных видов входных источников и применяет правила форматирования. Это гораздо лучше, чем ранее% на основе форматирования и строки шаблона. Однако, если вы используете Python 3.6+, вы также должны посмотреть на форматирование F-String (PEP 498 – литеральная строка интерполяции).
Ссылка: API док