Skip to content

String Format Mini Language

format_spec ::=  [[fill]align][sign][#][0][width][,][.precision][type]
fill        ::=  <any character>
align       ::=  "<" | ">" | "=" | "^"
sign        ::=  "+" | "-" | " "
width       ::=  integer
precision   ::=  integer
type        ::=  "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
"{" [field_name] ["!" conversion] [":" format_spec] "}"
   /                  "r"|"s"                   \
  /               (r)epr   (s)tr                 \
arg_name                                                 \
| ("." attribute_name | "[" element_index "]")*           \
|        |                       |                         \
|     identifier         integer | index_string            |
|                                   (quotes                |
[identifier                          not required)         |
|integer]                                                 |
                                                    |
_________________________________________________________/ \________
/                                                                    \
":"
  [[fill]align][sign][#][0][width][,][.precision][type]
[default]--> < left    +   |  |  (int)       (int)    b base 2
[default --> > right  [-]  |  |                       c character
for         ^ center " "  |  \                       d base 10
numbers]    =             |   `zero padding          e exponent (e)
                      |                          E exponent (E)
                     use 0b,0o,0x                f fixed point
                      for 2  8 16                F ^^(same)^^
b base 2     c character                 [default]--> g general (???)
o base 8     s string                                 G general 2 (?)
d base 10                                             n number (general 3)
x base 16                                             o base 8
X base 16                                             s string
e, E    exponent                         (lower case) x base 16
f, F, % fixed point                      (upper case) X base 16
g, G, n (general numbers)                   (x100, f) % percentage
print("{:>6.5}".format(var))        # right aligned to 6 digits, precision 5 (5 numbers including point e.g. 0.123)

print("{:08}".format(var))          # filled up with 0 to 8 digits, 00001234

print("0x{:0x}".format(int(var)))     # in hex small case, 0x4d2
print("0x{:0X}".format(int(var)))     # in hex small case, 0x4D2

print("{:04x}".format(int(var)))     # in hex small case, 0x04d2
print("{:04X}".format(int(var)))     # in hex small case, 0x04D2
import numpy as np
float_array = np.linspace(1, 9999, num=10)
int_array   = np.linspace(1, 9999, num=10).astype(int)
string_array = ["One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten"]

print("Choose Correct Placeholder")
for i in range(0,10):
  print(" | {2:>7} | {1:>7} | {0:>7.6} |".format(float_array[i], int_array[i], string_array[i]))

# Choose Correct Placeholder
#  |     One |       1 |     1.0 |
#  |     Two |    1111 | 1111.89 |
#  |   Three |    2222 | 2222.78 |
#  |    Four |    3333 | 3333.67 |
#  |    Five |    4444 | 4444.56 |
#  |     Six |    5555 | 5555.44 |
#  |   Seven |    6666 | 6666.33 |
#  |   Eight |    7777 | 7777.22 |
#  |    Nine |    8888 | 8888.11 |
#  |     Ten |    9999 |  9999.0 |

print("\nRight aligned to 7 digits, precision 6 (numbers including point e.g. 0.1234)")
for i in range(0,10):
  print(" | {:>7.6} | {:>7} | {:>7} |".format(float_array[i], int_array[i], string_array[i]))

# Right aligned to 7 digits, precision 6 (numbers including point e.g. 0.1234)
#  |     1.0 |       1 |     One |
#  | 1111.89 |    1111 |     Two |
#  | 2222.78 |    2222 |   Three |
#  | 3333.67 |    3333 |    Four |
#  | 4444.56 |    4444 |    Five |
#  | 5555.44 |    5555 |     Six |
#  | 6666.33 |    6666 |   Seven |
#  | 7777.22 |    7777 |   Eight |
#  | 8888.11 |    8888 |    Nine |
#  |  9999.0 |    9999 |     Ten |

print("\nLeft aligned to 7 digits, precision 6 (numbers including point e.g. 0.1234)")
for i in range(0,10):
  print(" | {:<7.6} | {:<7} | {:<7} |".format(float_array[i], int_array[i], string_array[i]))

# Left aligned to 7 digits, precision 6 (numbers including point e.g. 0.1234)
#  | 1.0     | 1       | One     |
#  | 1111.89 | 1111    | Two     |
#  | 2222.78 | 2222    | Three   |
#  | 3333.67 | 3333    | Four    |
#  | 4444.56 | 4444    | Five    |
#  | 5555.44 | 5555    | Six     |
#  | 6666.33 | 6666    | Seven   |
#  | 7777.22 | 7777    | Eight   |
#  | 8888.11 | 8888    | Nine    |
#  | 9999.0  | 9999    | Ten     |

print("\nFill up with "0" or "-" or "="")
for i in range(0,10):
  print(" | {:09.6} | {:->7} | {:=<7} |".format(float_array[i], int_array[i], string_array[i]))

# Fill up with "0" or "-" or "="
#  | 0000001.0 | ------1 | One==== |
#  | 001111.89 | ---1111 | Two==== |
#  | 002222.78 | ---2222 | Three== |
#  | 003333.67 | ---3333 | Four=== |
#  | 004444.56 | ---4444 | Five=== |
#  | 005555.44 | ---5555 | Six==== |
#  | 006666.33 | ---6666 | Seven== |
#  | 007777.22 | ---7777 | Eight== |
#  | 008888.11 | ---8888 | Nine=== |
#  | 0009999.0 | ---9999 | Ten==== |

print("\nPrint Hexadezimal stuff lower case")
for i in range(0,10):
  print(" | 0x{0:>7x} | 0x{0:07x} | 0x{0:x} |".format(int_array[i]))

# Print Hexadezimal stuff lower case
#  | 0x      1 | 0x0000001 | 0x1 |
#  | 0x    457 | 0x0000457 | 0x457 |
#  | 0x    8ae | 0x00008ae | 0x8ae |
#  | 0x    d05 | 0x0000d05 | 0xd05 |
#  | 0x   115c | 0x000115c | 0x115c |
#  | 0x   15b3 | 0x00015b3 | 0x15b3 |
#  | 0x   1a0a | 0x0001a0a | 0x1a0a |
#  | 0x   1e61 | 0x0001e61 | 0x1e61 |
#  | 0x   22b8 | 0x00022b8 | 0x22b8 |
#  | 0x   270f | 0x000270f | 0x270f |

print("\nPrint Hexadezimal stuff uppder case")
for i in range(0,10):
  print(" | 0x{0:>7X} | 0x{0:07X} | 0x{0:X} |".format(int_array[i]))

# Print Hexadezimal stuff uppder case
#  | 0x      1 | 0x0000001 | 0x1 |
#  | 0x    457 | 0x0000457 | 0x457 |
#  | 0x    8AE | 0x00008AE | 0x8AE |
#  | 0x    D05 | 0x0000D05 | 0xD05 |
#  | 0x   115C | 0x000115C | 0x115C |
#  | 0x   15B3 | 0x00015B3 | 0x15B3 |
#  | 0x   1A0A | 0x0001A0A | 0x1A0A |
#  | 0x   1E61 | 0x0001E61 | 0x1E61 |
#  | 0x   22B8 | 0x00022B8 | 0x22B8 |
#  | 0x   270F | 0x000270F | 0x270F |