我有一个带占位符的位置字符串,用作“#”。另一个字符串,用于替换占位符。我想按顺序替换它们(例如格式说明符)。用Python做到的方式是什么?
location = '/tmp/#/dir1/#/some_dirx/dir/var/2/#/dir3'
replacements = 'xyz'
result = '/tmp/x/dir1/y/some_dirx/dir/var/2/z/dir3'
答案 0 :(得分:1)
您应按如下所示使用字符串的replace
方法:
for replacement in replacements:
location = location.replace('#', replacement, 1)
使用第三个参数count
只是一次替换该占位符,这一点很重要。否则,它将在您每次找到占位符时替换。
答案 1 :(得分:0)
如果您的位置字符串不包含格式说明符({}
),则可以执行以下操作:
location = '/tmp/#/dir1/#/some_dirx/dir/var/2/#/dir3'
replacements='xyz'
print(location.replace("#", "{}").format(*replacements))
输出
/tmp/x/dir1/y/some_dirx/dir/var/2/z/dir3
作为替代方案,您可以使用re.sub中的repl可以是一个函数的事实:
import re
from itertools import count
location = '/tmp/#/dir1/#/some_dirx/dir/var/2/#/dir3'
def repl(match, replacements='xyz', index=count()):
return replacements[next(index)]
print(re.sub('#', repl, location))
输出
/tmp/x/dir1/y/some_dirx/dir/var/2/z/dir3