首页 > 解决方案 > TypeError:不支持的格式字符串在 Python 中使用 f-string 传递给 NoneType.__format__

问题描述

在将我的变量格式化为 11 个字符的一致宽度时,我注意到一些奇怪的事情:

>>> a = 1234
>>> b = None

>>> f'{a}'
'1234'
>>> f'{b}'
'None'

>>> f'{a:>11}'
'       1234'
>>> f'{b:>11}'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported format string passed to NoneType.__format__

标签: python

解决方案


您会认为使用 f 字符串将消除对 的显式调用的需要str,但 f 字符串的构造会重新路由到对 的调用b.__format__

您需要确保b不是None通过调用str

>>> f'{str(b):>11}'
'       None'

推荐阅读