There are three main alignment options in Python's string formatting:
| Character | Meaning |
|---|---|
< |
align left |
> |
align right |
^ |
centre |
However, numbers have a fourth option =.
On the surface, it looks like it doesn't do anything:
x = 73
print(f"@{x:10}@") # @ 73@
print(f"@{x:=10}@") # @ 73@
But that's because = influences the alignment of the sign.
If I make x negative, we already see something:
x = -73
print(f"@{x:10}@") # @ -73@
print(f"@{x:=10}@") # @- 73@
So, the equals sign = aligns a number to the right but aligns its sign to the left.
That may look weird, but I guess that's useful if you want to pad a number with 0s:
x = -73
print(f"@{x:010}@") # @-000000073@
In fact, there is a shortcut for this type of alignment, which is to just put a zero immediately to the left of the width when aligning a number:
x = -73
print(f"@{x:010}@") # @-000000073@
The zero immediately to the left changes the default alignment of numbers to be = instead of >.
Get a daily drop of Python knowledge. A short, effective tip to start writing better Python code: more idiomatic, more effective, more efficient, with fewer bugs. Subscribe here.