3

Python 的Formatter 类“允许您使用与内置 format() 方法相同的实现来创建和自定义自己的字符串格式化行为”。既然可以做

>>> '{}'.format(3.14)
'3.14'

>>> format(3.14, '')
'3.14'

我也期待以下工作:

>>> string.Formatter().format('{}', 3.14)
(…)
KeyError: ''

是否有任何标准方法可以使用 Formatter 处理这个非常常见且简单的格式化字符串?还是必须在表现得更像 Python 之前自定义格式化程序format()?这真的可以以一种健壮的方式(线程安全,...)吗?

4

1 回答 1

2

Python 2.6/3.0 中新式字符串格式化的原始实现不允许空{}模板。允许它们的更改记录为issue 5237: Allow auto-numbered replacement fields in str.format() strings。在该页面上,来自 Eric V. Smith 的消息 83559思考了是否string.Format也应该支持自动编号的问题(我想他的意思是string.Formatter)并得出了反对的结论。

在 issue 13598 中提出了一个补丁: string.Formatter 不支持空花括号 "{}"

于 2013-06-24T11:37:25.140 回答