【发布时间】:2014-06-11 18:56:59
【问题描述】:
我最近遇到了这个 TypeError 异常,我发现它很难调试。我最终将其简化为这个小测试用例:
>>> "{:20}".format(b"hi")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: non-empty format string passed to object.__format__
这对我来说非常不明显。我的代码的解决方法是将字节字符串解码为 unicode:
>>> "{:20}".format(b"hi".decode("ascii"))
'hi '
这个异常是什么意思?有没有办法让它更清楚?
【问题讨论】:
-
可能值得注意的是:这只是在 Python 3.4+ 中变成了
TypeError,它会影响从object继承的任何东西,而无需一路定义__format__(例如None;@987654328 @等)。 -
我也遇到了这个问题,终于发现应该包含float的变量,居然包含
None。因此'{0:.4f}'.format(bla)导致了这个异常
标签: python python-3.x string-formatting