【发布时间】:2013-05-09 07:37:54
【问题描述】:
我有一个复杂的嵌套字典对象,例如:
value = {
'a': '100',
bits: {
1: 'alpha',
2: 'beta',
3: ['31', '32', 901]
}
}
我需要使用模板“安全地”格式化它。这意味着如果找不到密钥,只需默默地忽略 {} 占位符。密钥可能不存在,我不想引发 KeyErrors。问题是 string.Template 无法处理与 str.format 相同的功能。我使用的 str.format 类似于:
"a=${a}, b1={bits[1]}, b31={bits[3]}, b9={bits[9]}".format(**value)
输出应该是:
"a=100, b1=alpha, b31=(31, 32, 901), b9="
我不需要花哨的循环或 if/else 条件。只是带有子字典的简单格式。
我有哪些选择?我更喜欢尽可能使用内置函数或非常小的库。
这不是一个网络应用程序,所以如果可能的话,我想避免为此加载像 jinja2 这样的库。
【问题讨论】:
-
尽管我喜欢重新发明更好的轮子,但我有时间限制并且更喜欢使用已经测试过的东西:-)
标签: python templates string-formatting