string.Formatter不接受“{}”模板?

时间:2013-06-24 09:36:23

标签: python formatting formatter

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

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

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

我期待以下工作:

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

使用Formatter处理这个非常通常和简单的格式化字符串有什么标准方法吗?或者必须先定制格式化程序,然后才能更像Python format()?这在robust way(线程安全,......)中真的可行吗?

1 个答案:

答案 0 :(得分:2)

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

issue 13598: string.Formatter doesn't support empty curly braces "{}"已提出补丁。