str.format
Возвращает копию строки, отформатированную указанным образом.
str.format(*args, **kwargs)
-> str
args -- Позиционные аргументы.
kwargs -- Именованные аргументы.
kwargs -- Именованные аргументы.
Строка, для которой вызывается данный метод может содержать как обычный текст, так и маркеры в фигурных скобках
Метод возвращает копию строки, в которой маркеры заменены текстовыми значениями из соответствуюих аргументов.
Общий вид маркера:
1. Наименование состоит из имени аргумента (либо его индекса). Числовой индекс при этом указывает на позиционный аргумент; имя же указывает на именованный аргумент.
Начиная с +py2.7 +py3.1, если используются числа и они составляют последовательноть (0, 1, 2...), то они могут быть опущены разом (но не выборочно). Например,
2. После наименования может следовать любое количество выражений доступа к атрибуту или адресации по индексу.
3. Приведение используется для приведения типов перед форматированием.
Обычно возврат отформатированого значения возлагается на метод
Поддерживаются три флага приведения:
4. Формат содержит определение того как должно быть представлено значение, включая информацию о длине, выравнивании, дополнении строки, точности для чисел итому подобное. Каждый тип может иметь свой мини-язык форматирования.
Большинство встроенных типов использует общий мини-язык.
Для поддержки динамического составления формата, его определение может содержать вложенные маркеры для замены. При этом допускается только один уровень вложенности. Вложенные маркеры заменяются значениями до того как будет интерпретирована строка формата.
{}
, которые следует заменить. Обычный текст, вне скобок будет выведен как есть без именений.Метод возвращает копию строки, в которой маркеры заменены текстовыми значениями из соответствуюих аргументов.
Общий вид маркера:
'{'[наименование('.'аттр|'['индекс']')*] ['!'приведение] [':'формат] '}'
На заметку
Если требуется, чтобы результирующая строка содержала скобку, то этот спецсимвол можно экранировать при помощи его удвоения:
{{
и }}
.1. Наименование состоит из имени аргумента (либо его индекса). Числовой индекс при этом указывает на позиционный аргумент; имя же указывает на именованный аргумент.
Начиная с +py2.7 +py3.1, если используются числа и они составляют последовательноть (0, 1, 2...), то они могут быть опущены разом (но не выборочно). Например,
{}-{}-{}
и {0}-{1}-{2}
эквивалентны.Внимание
Существуют ограничения на наименования, используемые для адресации именованных аргументов. Например, не удасться адресовать
10
или :-]
.'{}-{}-{}'.format(1, 2, 3) # '1-2-3'
'{}-{}-{}'.format(*[1, 2, 3]) # '1-2-3'
'{one}-{two}-{three}'.format(two=2, one=1, three=3) # '1-2-3'
'{one}-{two}-{three}'.format(**{'two': 2, 'one': 1, 'three': 3}) # '1-2-3'
2. После наименования может следовать любое количество выражений доступа к атрибуту или адресации по индексу.
- Атрибут объекта адресуется при помощи
.
(точки). Задействуется getattr(). - Доступ к элементу контейнера при помощи
[]
(квадратных скобок). Задействуется__getitem__()
.
class Temp(object):
attr = 3
obj = {'one': {'sub': 1}, 'two': [10, 2, 30], 'three': Temp()}
'{one[sub]}-{two[1]}-{three.attr}'.format(**obj) # '1-2-3'
3. Приведение используется для приведения типов перед форматированием.
Обычно возврат отформатированого значения возлагается на метод
__format__()
, однако бывают случаи, что требуется произвести принудительное приведение, например, к строке, в обход имеющейся реализации. Логика форматирования по умолчанию обходится при помощи приведения значения к строке перед вызовом __format__()
.Поддерживаются три флага приведения:
class Demo: # Python 3
def __str__(self):
return 'str'
def __repr__(self):
return 'repr'
def __ascii__(self):
return 'ascii'
def __format__(self, format_spec):
return 'format'
demo = Demo()
'{!s}-{!r}-{!a}-{}'.format(demo, demo ,demo, demo) # 'str-repr-ascii-format'
4. Формат содержит определение того как должно быть представлено значение, включая информацию о длине, выравнивании, дополнении строки, точности для чисел итому подобное. Каждый тип может иметь свой мини-язык форматирования.
Большинство встроенных типов использует общий мини-язык.
Для поддержки динамического составления формата, его определение может содержать вложенные маркеры для замены. При этом допускается только один уровень вложенности. Вложенные маркеры заменяются значениями до того как будет интерпретирована строка формата.
'-{:{fill}{align}8}-'.format('some', fill='+', align='^') # '-++some++-'
На заметку
Дополнительная информация о формате доступна в разделе «Мини-язык форматирования».
Синонимы поиска: str.format, str, format, формат, форматирование
В разделе «str (строка)»:
str.capitalize
str.casefold
str.center
str.count
str.decode
str.encode
str.endswith
str.expandtabs
str.find
str.format_map
str.index
str.isalnum
str.isalpha
str.isascii
str.isdecimal
str.isdigit
str.isidentifier
str.islower
str.isnumeric
str.isprintable
str.isspace
str.istitle
str.isupper
str.join
str.ljust
str.lower
str.lstrip
str.maketrans
str.partition
str.replace
str.rfind
str.rindex
str.rjust
str.rpartition
str.rsplit
str.rstrip
str.split
str.splitlines
str.startswith
str.strip
str.swapcase
str.title
str.translate
str.upper
str.zfill
Форматирование при помощи %
Форматные строки (f-string)
На заметку
Зарегистрированные пользователи могут публиковать свои мнения относительно Книг, Видео, Статей других авторов и прочего в разделе Обсуждений.