str
format
See https://docs.python.org/3/library/string.html#formatspec and https://peps.python.org/pep-3101/
./code/str/format.py
1a = 1
2b = 2
3c = 3
4assert "{}".format(a) == "1"
5assert "{}".format(b) == "2"
6assert "{0} {1} {foo}".format(a, b, foo=c) == "1 2 3"
7
8# 1 - the first positional argument (counting from 0)
9# foo - it is a keyword argument
10# 0 - the zeros positional
11assert "{1} {foo} {0}".format(a, b, foo=c) == "2 3 1"
12
13assert "{0} {1} {0} {0}".format(a, b) == "1 2 1 1"
14
15assert "skip braces {0} {{}}".format(a) == "skip braces 1 {}"
16print("{}") # {}
17try:
18 print("{} {}".format(a))
19except IndexError as e:
20 assert str(e) == "Replacement index 1 out of range for positional args tuple"
21
22assert "{0:2}".format(a) == " 1"
23assert "{0:02}".format(a) == "01"
24assert "{0:03}".format(a) == "001"
25assert "{0:1}".format(-1) == "-1"
26assert "{0:2}".format(-1) == "-1"
27assert "{0:3}".format(-1) == " -1"
28assert "{0:03}".format(-1) == "-01"
29
30assert "{0:.2f}".format(0.5) == "0.50"
31assert "{0:.3f}".format(0.5) == "0.500"