f-строка, несколько спецификаторов формата - PullRequest
0 голосов
/ 24 января 2020

Можно ли использовать несколько спецификаторов формата в python f-строке?

Например, допустим, мы хотим округлить числа до 2 десятичных знаков, а также указать ширину для печати. ​​

По отдельности это выглядит так:

In [1]: values = [12.1093, 13.95123]

In [2]: for v in values: print(f'{v:.2}')
1.2e+01
1.4e+01

In [3]: for v in values: print(f'{v:<10} value')
12.1093    value
13.95123   value

Но возможно ли объединить оба?

Я пытался:

for v in values: print(f'{v:.2,<10} value')

Но получил Invalid format specifier error

Ответы [ 4 ]

2 голосов
/ 24 января 2020

Вы хотите

for v in values: print(f'{v:<10.2} value')

Подробные правила можно найти в https://docs.python.org/3/library/string.html#formatstrings.

Общая форма стандартного спецификатора формата is:

format_spe c :: = [[fill] align] [sign] [#] [0] [width] [grouping_option] [. Precision] [ введите]

Для вашего случая вы хотите, чтобы [выровнять] и [.precision].

1 голос
/ 24 января 2020

Python допускает несколько спецификаторов формата. Подробное обсуждение этого можно прочитать по адресу https://www.python.org/dev/peps/pep-3101/

Что касается вашего ответа, необходимая команда:

for v in values: print(f'{v:<10.2} value')
1 голос
/ 24 января 2020

В зависимости от желаемого результата вы можете комбинировать их, как правило, например:

for v in values: print(f"{v:<10.2} value")

#1.2e+01    value
#1.4e+01    value

Однако ваш результат не похож на результат, который вы ищете.

Для принудительного использования исправлена ​​запись 2, которую необходимо добавить f

for v in values: print(f"{v:<10.2f} value")

#12.11      value
#13.95      value

Подробнее о спецификациях формата можно прочитать здесь здесь .

1 голос
/ 24 января 2020

Да, но вам нужно сначала указать ширину, а затем точность. Запятая используется для разделения тысяч, поэтому не используйте ее здесь:

>>> for v in values: print(f'{v:<10.2} value')
1.2e+01    value
1.4e+01    value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...