The chapter on output formatting is really out of date: there is now
an almost complete interface to C-style printf formats. This is done
by overloading the modulo operator (%) for a left operand
which is a string, e.g.
>>> import math
>>> print 'The value of PI is approximately %5.3f.' % math.pi
The value of PI is approximately 3.142.
>>>
If there is more than one format in the string you pass a tuple as right operand, e.g.
>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
>>> for name, phone in table.items():
... print '%-10s ==> %10d' % (name, phone)
...
Jack ==> 4098
Dcab ==> 8637678
Sjoerd ==> 4127
>>>
Most formats work exactly as in C and require that you pass the proper
type (however, if you don't you get an exception, not a core dump).
The %s format is more relaxed: if the corresponding argument is
not a string object, it is converted to string using the str()
built-in function. Using * to pass the width or precision in
as a separate (integer) argument is supported. The C formats
%n and %p are not supported.