#pragma section-numbers off = String Formatting = The [[http://docs.python.org/lib/typesseq-strings.html|section of the manual on String Formatting Operations]] is hidden in the section on [[http://docs.python.org/lib/typesseq.html|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. {{{ #!python a = "hello, world!" x = 34 y = 96 print """ a = %(a)s x,y = (%(x)s,%(y)s) """ % vars() # local variables }}} If you want to refer to global variables, you can replace {{{vars()}}} with {{{globals()}}}. == Printing Percentages == {{{ #!python percent = lambda x:"%2.2f%%" % x print percent(35.3567) # prints "35.35%" }}} == Print strings without newlines and spaces == 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 {{{ #!python for i in range(10): 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`: {{{ #!python import sys for i in range(10): 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: {{{ #!python for i in range(10): print '\b%d' % i, # 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 {{{ #!python for member in dir(sys): print "sys." + member, "->", repr(getattr(sys, member)) }}}