Revision 14 as of 2008-11-15 14:00:43

Clear message

String Formatting

The section of the manual on String Formatting Operations is hidden in the section on Sequence types.

Tutorial on the new string formatting method format() in Python 3.0: Py3kStringFormatting

Direct Variable Reference

A common trick you can use when writing strings is to refer directly to variables.

   1 a = "hello, world!"
   2 x = 34
   3 y = 96
   4 
   5 print """
   6 a = %(a)s
   7 x,y = (%(x)s,%(y)s)
   8 """ % vars() # local variables

If you want to refer to global variables, you can replace vars() with globals().

Printing Percentages

   1 percent = lambda x:"%2.2f%%" % x
   2 
   3 print percent(35.3567) # prints "35.35%"

You may find it tricky to print out a feed of numbers (as output from within a loop) on one line, without being separated by a space. An example could be output such as

Processing...
[1][2][3][4][5][6]
Completed.

The standard print statement automatically inserts newlines. This can be overcome with

   1 for i in range(10):
   2     print '['+str(i)+']',  # NOTE the trailing comma

but a space will get inserted between successive prints. One way to get around this is using sys.stdout:

   1 import sys
   2 for i in range(10):
   3     sys.stdout.write('['+str(i)+']')

which will work properly.

See Also

EscapingHtml, WorkingWithTime

Discussion

You can also print a backspace ('\b') to swallow the extra space. eg:

   1 for i in range(10):
   2     print '\b%d' % i,
   3 # Prints: 0123456789

Unfortunately, this produces a mess if output is being directed to a file; it's best to avoid printing the space if you don't want it.

Variable name substitution using format and eval

I want to print out all member of sys, then what I need is

   1 for member in dir(sys):
   2     print "sys." + member, "->", repr(getattr(sys, member))

Unable to edit the page? See the FrontPage for instructions.