使用 f-strings 格式化布尔值

Using f-strings to format a boolean

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

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

但是得到:

ValueError: Unknown format code 's' for object of type 'bool'

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

print(f"X = {str(True):5}")

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

使用conversion flags

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

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

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

其中 !s 调用 str()!r 调用 repr()!a 调用 ascii() 值。