使用 f 字符串格式化布尔值

Hep*_*tus 7 python-3.x f-string

我希望有人已经回答了这个问题,但我已经搜索了这个主题,但找不到答案。
使用 Python3.6+,我想使用 f 字符串将布尔变量格式化为固定宽度。我有结果表,并希望 True 和 False 值的宽度固定,所以我想要一个宽度为五个字符的格式化字符串。以下是有意义的:

print(f"X = {True:5s}")
Run Code Online (Sandbox Code Playgroud)

但是得到:

ValueError: Unknown format code 's' for object of type 'bool'
Run Code Online (Sandbox Code Playgroud)

我知道我可以强制进行字符串转换:

print(f"X = {str(True):5}")
Run Code Online (Sandbox Code Playgroud)

但是,不能使用格式说明符代码似乎很奇怪。是否有一些我缺少的语法变体?我读过PEP498,但它甚至从未提到布尔值。

Neg*_*eon 11

使用转换标志

print(f"X = {True!s:^5}")

或者

print(f"X = {True!r:^5}")

或者

print(f"X = {True!a:^5}")

where !scalls str()!rcallsrepr()!acallsascii()的值。