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))

StringFormatting (last edited 2008-11-15 14:00:43 by localhost)

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