Python: Format String

By Xah Lee. Date: . Last updated: .

Note: in practice, these two returns the same thing.

# -*- coding: utf-8 -*-
# python

ss = [3, 4, 3.123456789012345678901234567890, (7, 8, "9")]
print (str(ss))         # [3, 4, 3.1234567890123457, (7, 8, '9')]
print (repr(ss))        # [3, 4, 3.1234567890123457, (7, 8, '9')]

C Style printf

The “print” function itself supports string formatting in the style of C's printf. The syntax is: print "…" % (arg1, arg2, …)

#-*- coding: utf-8 -*-
# python

# integer
print "%d" % (1234)             # 「1234」

# padding by space
print "%4d" % (12)              # 「  12」

# float. 2 integer, 4 decimal
print "%2.4f" % (3.123456789)   # 「3.1235」

# string.
print "%5s" % ("cats")          # 「 cats」
print "%2s" % ("cats")          # 「cats」

print "%2d◇%6d◇%2.4f◇%s" % (1234, 5678, 3.123456789, 'cats!') # 「1234◇  5678◇3.1235◇cats!」

Python Style String 「.format()」 Method

A better way to format string is str.format(arg1, arg2, …).

Use {…} as placeholder in string.

# -*- coding: utf-8 -*-
# python

# “:s” is for string
print "{:s}".format("cat")          # cat

# “:s” is default, and can be omitted.
print "{}".format([3, 4])          # [3, 4]

# decimal int
print "{:d}".format(3)          # 3

# binary
print "{:b}".format(3)          # 11

# hex
print "{:x}".format(10)          # a

# formatting multiple args
print "{:d}, {:s}, {:s}".format(3, "cat", [7, 8])

# use {{}} to include literal {}
print "brace {{}}, a is {}".format(3)     # brace {}, a is 3

You can refer to the argument and change print order.

# -*- coding: utf-8 -*-
# python

print "{0:d}, {1:s}, {2:s}".format(3, "cat", [7, 8]) # 3, cat, [7, 8]

print "{1:s}, {0:d}, {2:s}".format(3, "cat", [7, 8]) # cat, 3, [7, 8]

Printing Without Newline

To print without the newline char added at the end, add a comma. Example:

# -*- coding: utf-8 -*-
# python

print "rabbit",                 # suppress printing newline
print "tiger"

# prints 「rabbit tiger」

Or, use sys.stdout.write(). Example:

# -*- coding: utf-8 -*-
# python

import sys
sys.stdout.write("rabbit")
sys.stdout.write("tiger")

# output: 「rabbittiger」

See also: Python 3: Formatting String

Thanks to Yuri Khan for a suggetion on Python print.