Python .format, включая форматирование с плавающей точкой - PullRequest
0 голосов
/ 21 мая 2018

Я давно знал о .format, но когда я попытался включить форматирование с плавающей точкой в ​​строку, как показано ниже:

"ab_{}_cd{}_e_{}_{}_{}_val={0:.5f}_{}".format(string1,str(2),string2,string3,string4,str(0.12345678),string5)

В приведенном выше примере строка1-5 обозначает случайные строки, включенные для этого примера.

Возвращает следующую ошибку ValueError: cannot switch from automatic field numbering to manual field specification

После некоторого поиска этот вопрос, похоже, содержит решение Использование .format () для форматированиясписок с аргументами ширины поля

Приведенная выше ссылка показывает, что мне нужно отформатировать все {} в строке, чтобы получить желаемое форматирование.Я взглянул на официальную документацию https://docs.python.org/2/library/string.html и https://docs.python.org/2/library/stdtypes.html#str.format, и мало что могу объяснить, что я ищу.

Желаемый результат:

Объяснение того, как я могу преобразовать автоматическую спецификацию поля опции .format в ручную спецификацию поля только с форматированием предоставленной мною переменной с плавающей запятой и оставляя все остальные переменные строки 1-5 неформатированными.Хотя я мог бы просто использовать что-то вроде round() или просто эквивалент, это может вызвать проблемы, и я чувствую, что лучше учиться на примере .format.

1 Ответ

0 голосов
/ 21 мая 2018

в вашем коде удалите ноль перед округленной цифрой

"ab_{}_cd{}_e_{}_{}_{}_val={:.5f}_{}".format(string1,str(2),string2,string3,string4,str(0.12345678),string5)

ПРИМЕЧАНИЕ: почему это не сработало, вы можете указать индекс в {} как {0}, {1} или оставить всеиз них, но вы не можете хранить несколько {} с индексом и несколько без индекса.

...