У меня есть следующий пример в Python для печати таблицы:
job_IDs = ['13453', '123', '563456'];
memory_used = [30, 150.54, 20.6];
memory_units = ['MB', 'GB', 'MB'];
for i in range(len(job_IDs)):
print "Job {item:15} {value[0]:>6}.{value[1]:<6} {units:3}".format(
item=job_IDs[i]+':', value=memory_used[i].split('.') if '.' in memory_used[i]
else (memory_used[i], '0'), units=memory_units[i])
что приводит к:
Job 13453: 30 MB Job 123: 150.54 MB Job 563456: 20.6 GB
Вертикальное выравнивание соответствует тому, что мне нужно, но горизонтальное заполнение вручную жестко закодировано в коде, где написано:
"Job {item:15} {value[0]:>6}.{value[1]:<6} {units:3}"
(«параметры заполнения» выше — 15, 6, 6, 3
)
Я хотел бы:
- #P6# #P7# <цитата>
цитата>Job 13453: 30 MB Job 123: 150.54 MB Job 563456: 20.6 GB
В качестве альтернативы мне также было бы интересно решение, которое позволяет мне указывать такие отступы в переменных (на случай, если я хочу контролировать ширину, заданную для каждого столбца).
Меня интересуют решения обеих проблем: с отступом, вычисляемым автоматически, и с отступом, заданным с помощью переменных.
Кстати, этот вопрос был вдохновлен другим вопросом: Использование мини-языка спецификации формата Python для выравнивания поплавков
width
. - person jfs   schedule 04.03.2012