У меня есть словарь, который выглядит примерно так:последовательного форматирования строк из словаря с этикетками в питон оператора печати
d = {
'last_price': '760.54',
'change': 'N/A',
'days_range': '760.00 - 775.00',
'previous_close': '771.23',
'change_percent': '-1.39%',
}
Все значений в этом словаре может быть изменено. Числа могут сильно различаться от отдельных цифр до цифр длиной в несколько цифр. Я хотел бы форматировать эту информацию и последовательно представить это следующим образом:
Last: $760.54 Change: N/A (-1.39%)
Prev Close: $771.23 Day's Range: $760.00 - $775.00
До сих пор я пытался сделать это, делая это:
print "\
Last: {last_price:>17} \t Change: {change:>11} ({change_percent}) \n\
Prev Close: {previous_close:>11} \t Day's Range: {days_range:>18}\
".format(**d)
Это производит вывод, который выглядит следующим образом :
Last: 760.54 Change: N/A (-1.39%)
Prev Close: 771.23 Day's Range: 760.00 - 775.00
Хотя это работает достаточно хорошо, если число не изменится, если «days_range» установлен в значение типа «78.91 - 79.91» он будет прыгать дальше вправо. Например:
Last: 79.21 Change: N/A (-1.19%)
Prev Close: 80.16 Day's Range: 78.91 - 79.91
Я также не могу сказать, что я очень доволен, используя «\ т», чтобы отделить столбцы, как я обеспокоен тем, что если значения в первом столбце слишком долго, это может привести к правую колонку, чтобы ее толкнуть дальше, чем хотелось.
Есть ли простой и элегантный способ сделать это? Я бы предпочел решение, которое не зависит от нестандартных библиотек и относительно просто.
Я также хотел бы знать простой способ добавления значений знаками доллара без необходимости изменять значения в словаре.
Он прыгает вправо, потому что это более короткая строка, и вы правы, выравнивая их. Похоже, вы хотите, чтобы каждое значение выравнивалось по левому краю внутри столбца. – TigerhawkT3