2013-09-30 8 views
10

Я пытаюсь отформатировать строку, чтобы все было между двумя.форматирование строки python Столбцы в строке

APPLES       $.99       214      
kiwi        $1.09       755 

Я пытаюсь это, выполнив:

fmt = ('{0:30}{1:30}{2:30}'.format(Fruit,price,qty)) 

Как бы я получить столбец выстраиваться? Я читал документы, но я в замешательстве. Я думал, что {1:30} сделает его 30 пробелами, затем он напечатает следующий элемент, но окажется, что это 30 пробелов, из которых закончился предыдущий элемент.

Благодаря

ответ

26

str.format() делает ваши поля по левому краю в пределах доступного пространства. Используйте alignment specifiers изменить выравнивание:

'<' Заставляет поля и выравнивается по левому краю в пределах доступного пространства (это значение по умолчанию для большинства объектов).

'>' Заставляет поле выравниваться по правому краю в пределах доступного пространства (это значение по умолчанию для чисел).

'=' Задает прокладку, помещаемую после знака (если есть), но перед цифрами. Используется для печати полей в форме «+000000120». Этот параметр выравнивания действителен только для цифровых типов .

'^' Заставляет поле находиться в центре Свободное пространство.

Вот пример (с левыми и правыми выравниваниями):

>>> for args in (('apple', '$1.09', '80'), ('truffle', '$58.01', '2')): 
...  print '{0:<10} {1:>8} {2:>8}'.format(*args) 
... 
apple   $1.09  80 
truffle  $58.01  2 
+0

Что делать, если, например, 1,09 является значение, которое было вычислено из где-то, но в формате 1.0934433432 (например, высокая точность). И я просто хочу округлить его до 2 десятичных точек (т.е. = 1,09). Что мне делать? –

+0

Вы можете указать [точность] (https://docs.python.org/2/library/string.html#grammar-token-precision). Для получения дополнительной информации см. [Этот ответ] (http://stackoverflow.com/a/8940627/1322401) на * Как я могу отформатировать десятичный знак, чтобы всегда показывать 2 десятичных знака? *. –

Смежные вопросы