Использование запятых в значениях доллара в печатной таблице - PullRequest
0 голосов
/ 17 июня 2020

Я печатаю таблицу - несколько строк, содержащих различные типы переменных - пример:

print('{:10s} ${:12.0f}  {:10.1f}%'.format(ID,value,change))

first      $324681         2.4%

, где целые числа 10, 12 и 10 обеспечивают нужный мне интервал столбцов.

Но я хочу, чтобы суммы в долларах были напечатаны через запятую, таким образом:

print('{:10s} ${:,.0f}  {:10.1f}%'.format(ID,value,change))

first      $324,681         2.4%

Но при этом теряются пробелы «12», разрешенные для второго элемента.

Но когда я пытаюсь

print('{:10s} ${:,12.0f}  {:10.1f}%'.format(ID,value,change))

Я получаю "ValueError: Invalid format specifier"

Как я могу получить запятые и управлять интервалом между столбцами?

Python 3.6 работает в Spyder.

Ответы [ 2 ]

0 голосов
/ 17 июня 2020

Это должно сработать:

print('{:10s} ${:1,d} {:10.1f}%'.format('first', 324681, 2.4))

ВЫХОД:

first      $324,681        2.4%
0 голосов
/ 17 июня 2020

Если вас устраивает указанная общая ширина, но доллар в фиксированном столбце, возможно, отделенный от цифр, тогда вы можете просто делать то, что делали, но с 12 перед ,.

>>> value = 324681
>>> ID = "first"
>>> change = 2.4
>>> print('{:10s} ${:12,.0f}  {:10.1f}%'.format(ID,value,change))
first      $     324,681         2.4%

Если вы хотите, чтобы числа следовали сразу после $, вы можете отформатировать его как строку без каких-либо дополнений, а затем использовать строку в описателе формата фиксированной ширины:

>>> print('{:10s} {:13s}  {:10.1f}%'.format(ID ,'${:,.0f}'.format(value), change))
first       $324,681             2.4%

или:

>>> print('{:10s} {:>13s}  {:10.1f}%'.format(ID ,'${:,.0f}'.format(value), change))
first           $324,681         2.4%

(Спецификатор ширины здесь увеличен до 13, потому что сам знак $ добавлен к 12 символам, используемым для числа.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...