我必须将包含占位符的字符串用于以后的替换,例如:
"A %s B %s"
并将其转换为:
"A {0} B {1}"
我想出了:
def _fix_substitution_parms(raw_message):
rv = raw_message
counter = 0
while '%s' in rv:
rv = rv.replace('%s', '{' + str(counter) + '}', 1)
counter = counter + 1
return rv
那行得通,但感觉超级笨拙,根本不是“惯用的” python。
良好的惯用python解决方案会是什么样子?
更新说明:
- 生成的字符串未在python中使用。我确实需要那里的柜台号码!(所以
{}还不够好)! - 我只需要关心
%s字符串,因为保证消息仅使用%s(什么也%i %f没有)
“ re.sub”可以用作替换功能,以带编号的花括号动态替换。顺便说一句:用{}代替数字也可以。
—
迈克尔·布彻
如果您有
—
可行的
@kojiro由于“太笨拙”
—
它对我不起作用