str.format 几乎完全是我正在寻找的。 我想要添加到format()的功能是使用可选关键字,为此我必须使用另一个特殊字符(我猜)。
所以str.format可以做到这一点:
f = "{ID1}_{ID_optional}_{ID2}"
f.format(**{"ID1" : " ojj", "ID2" : "makimaki", "ID_optional" : ""})
# Result: ' ojj__makimaki' #
我无法真正使用可选的ID&#39。如果字典不包含" ID_optional"它会产生KeyError。我认为标记可选ID应该是这样的:
f = "{ID1}_[IDoptional]_{ID2}"
另一件事:我有很多要处理的模板字符串,它们使用的是[]而不是{}。因此,最好的方法是将特殊字符添加为格式函数的参数。
所以基本的问题是有一种复杂的方法来修改原始函数吗?或者我应该根据 str.format 和定期编写我自己的格式函数表达式
答案 0 :(得分:0)
你是否/并根据dic是否有密钥进行格式化:
f = "{ID1}_{ID_optional}_{ID2}" if "ID_optional" in d else "{ID1}_{ID2}"
dict查找是0(1)
所以只检查
答案 1 :(得分:0)
一种选择是定义自己的Formater。您可以继承标准的并覆盖get_field以为您的用例返回一些合理的默认值。请参阅链接以获取更多文档。