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