Законны ли вложенные спецификации формата? - PullRequest
0 голосов
/ 30 июня 2018

Недавно я столкнулся со следующей странностью. Вложенные {} закрытые поля формата, кажется, работают как в Python 2.7, так и в 3.6, но я не могу найти ничего в документах, чтобы сказать, что так и должно быть. Например, я получаю следующий результат на 3,6 и 2,7:

>>> '{:{}.{}f}'.format(27.5, 6, 2)
' 27.50'

Кто-нибудь видел это раньше, и это предназначенная функция? Обычно я отклонял бы это как причуду реализации и, возможно, сообщал об этом как об ошибке. Однако есть две вещи: документы Python не всегда помещают всю информацию в место, где я ее ищу, и это очень хорошая функция.

1 Ответ

0 голосов
/ 30 июня 2018

Это задокументировано в конце введения в раздел «Формат строки синтаксиса» :

Поле

A format_spec также может содержать вложенные замещающие поля внутри него. Эти вложенные замещающие поля могут содержать имя поля, флаг преобразования и спецификацию формата, но более глубокое вложение не допускается. Заменяющие поля в пределах format_spec подставляются перед интерпретацией строки format_spec . Это позволяет динамически указывать форматирование значения.

Некоторые примеры этой функции также можно найти в конце «Примеры форматов» , например:

>>> for align, text in zip('<^>', ['left', 'center', 'right']):
...     '{0:{fill}{align}16}'.format(text, fill=align, align=align)
...
'left<<<<<<<<<<<<'
'^^^^^center^^^^^'
'>>>>>>>>>>>right'
>>>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...