2024-06-26 02:06:06 发布
网友
是否可以使用高级字符串格式化方法进行部分字符串格式化,类似于字符串模板safe_substitute()函数?
safe_substitute()
例如:
s = '{foo} {bar}' s.format(foo='FOO') #Problem: raises KeyError 'bar'
您可以通过覆盖映射将其转换为部分格式:
import string class FormatDict(dict): def __missing__(self, key): return "{" + key + "}" s = '{foo} {bar}' formatter = string.Formatter() mapping = FormatDict(foo='FOO') print(formatter.vformat(s, (), mapping))
印刷
FOO {bar}
当然,这个基本实现只适用于基本情况。
如果你知道你是按什么顺序格式化的:
s = '{foo} {{bar}}'
像这样使用:
ss = s.format(foo='FOO') print ss >>> 'FOO {bar}' print ss.format(bar='BAR') >>> 'FOO BAR'
不能同时指定foo和bar-必须按顺序执行。
foo
bar
您可以使用functools中的partial函数,该函数很短,可读性最强,也最能描述编码器的意图:
functools
partial
from functools import partial s = partial("{foo} {bar}".format, foo="FOO") print s(bar="BAR") # FOO BAR
您可以通过覆盖映射将其转换为部分格式:
印刷
当然,这个基本实现只适用于基本情况。
如果你知道你是按什么顺序格式化的:
像这样使用:
不能同时指定
foo
和bar
-必须按顺序执行。您可以使用
functools
中的partial
函数,该函数很短,可读性最强,也最能描述编码器的意图:相关问题 更多 >
编程相关推荐