Форматирование вывода в Python

Под катом очень небольшая справка по форматированию вывода в Python и пара полезных ссылок по этой теме.

?грать будем со следующими числами:

>>> from math import cos
>>> n = 8.1
>>> c = cos(n)

Между значениями разделёнными запятой print вставляет пробелы:

>>> print "cos(", n, ")=", c
cos( 8.1 )= -0.243544153736

Чтобы пробелов не было, нужно использовать + . При этом значение n нужно переводить в str

>>> print "cos("+ str(n) + ")=", c
cos(8.1)= -0.243544153736

Форматирование через сишный printf синтаксис:

In [8]: print "cos(%g)= %12.5e" % (n,c)
cos(8.1)= -2.43544e-01

Форматирование через подстановку переменных:

>>> print "cos(%(n)g)= %(c)12.5e" % vars()
cos(8.1)= -2.43544e-01

Вместо использования print можно выводить данные в sys.stdout:

>>> import sys
>>> sys.stdout.write("cos(%g)= %12.5e\n" % (n,c))
cos(8.1)= -2.43544e-01

Заметьте, что write не добавляет перевода строки в конце, как это делает print, поэтому приходится добавлять \n.

Примеры использования форматов из книги «Python Scripting for Computational Science»

%d — целое

>>> n = 10.57
>>> print "%d" % (n)
10

%5d — целое, записанное в поле из пяти символов (в данном случае перед цифрой стоит три пробела)

>>> print "%5d" % (n)
   10

%-5d — целое, записанное в поле из пяти символов, но выравненное влево (там справа ещё три пробела)

>>> print "%-5d" % (n)
10

%05d — целое, записанное в поле из пяти символов, с нулями впереди

>>> print "%05d" % (n)
00010

%g — вещественное с плавающей запятой, записанное либо в %f либо в %e нотации

>>> print "%g" % (n)
10.57
>>> print "%g" % (120000)
120000
>>> print "%g" % (1200000)
1.2e+06
>>> print "%g" % (0.0001)
0.0001
>>> print "%g" % (0.00001)
1e-05

%e — вещественное с плавающей запятой, записанное в научной нотации

>>> print "%e" % (n)
1.057000e+01

%E — то же что %e, но для обозначения экспоненты используется заглавная E

>>> print "%E" % (n)
1.057000E+01

%11.3e — вещественное с плавающей запятой, записанное в научной нотации, с 3мя знаками после запятой в поле из 11ти знаков (в данном случае перед числом 2 пробела)

>>> print "%11.3e" % (n)
  1.057e+01

%.3e — вещественное с плавающей запятой, записанное в научной нотации, в поле минимально необходимой ширины

>>> print "%.3e" % (n)
1.057e+01

%5.1f — вещественное с плавающей запятой, с одним знаком после запятой, шириной в поле шириной пять знаков (в данном случае один пробел перед цифрой и округление)

>>> print "%5.1f" % (n)
 10.6

%.3f — вещественное с плавающей запятой, с тремя знаками после запятой, в поле минимально необходимой ширины

>>> print "%.3f" % (n)
10.570

%s — строка. Если аргумент не строка, то производится автоматическое конвертирование его в строку путём str(n)

>>> print "%s" % (n)
10.57

%20s — строка из 20 символов, цифра выравнена вправо.

>>> print "%20s" % (n)
               10.57

%-20s — строка из 20 символов, цифра выравнена влево.

>>> print "%-20s" % (n)
10.57

Ссылки по теме: