# String Formatting¶

## C-Style Formatting (1)¶

Good old C: %[flags][width][.precision]type}

 Good ol’ C Python Program¶ int i = 42; float f = 3.14159265359; printf("%07d, %8.4f\n", i, f);  Output¶ 0000042, 3.1416  Same in Python, using the % operator¶ >>> '%07d' % 42 '0000042' >>> '%07d, %8.4f' % (42, 3.14159265359) '0000042, 3.1416' 

## C-Style Formatting: Conversions¶

Frequently used conversions

 s String c Single character d Integer (decimal) o Integer (octal) x Integer (hexadecimal lowercase) X Integer (hexadecimal uppercase) f Floating point exponential format (lowercase) F Floating point exponential format (uppercase) \% The % sign itself

## C-Style Formatting: Flags¶

Frequently used flags

 # Octal or hex integer conversions: 0x... prefixes 0 Pad with ‘0’ characters - Left alignment + Print sign even if positive   (space) Print space in place of sign if positive

## C-Style Formatting: Examples¶

 >>> '%#5X' % 47 ' 0X2F' >>> '%5X' % 47 ' 2F' >>> '%#5.4X' % 47 '0X002F' >>> '%#5o' % 25 ' 0o31' >>> '%+d' % 42 '+42'  >>> '% d' % 42 ' 42' >>> '%+2d' % 42 '+42' >>> '% 4d' % 42 ' 42' >>> '% 4d' % -42 ' -42' >>> '%04d' % 42 '0042' 

## The format Method¶

Problems with C-style formatting

• Not flexible enough (as always)

• Positional parameters only

• Parameter position must match occurence in format string

A better (?) way of formatting
>>> '0 {0:05d}, 1 {1:8.2f}, 0 again {0}'.format(42, 1.5)
'0 00042, 1     1.50, 0 again 42'
>>> 'a {a:05d}, b {b:8.2f}, a again {a}'.format(a=42, b=1.5)
'a 00042, b     1.50, a again 42'


More ⟶ RTFM