在python中修改str.format函数

时间:2015-03-05 14:19:25

标签: python regex string format

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 定期编写我自己的格式函数表达式

2 个答案:

答案 0 :(得分:0)

你是否/并根据dic是否有密钥进行格式化:

f = "{ID1}_{ID_optional}_{ID2}" if "ID_optional" in d else "{ID1}_{ID2}" 

dict查找是0(1)所以只检查

便宜

答案 1 :(得分:0)

一种选择是定义自己的Formater。您可以继承标准的并覆盖get_field以为您的用例返回一些合理的默认值。请参阅链接以获取更多文档。