Python 用替换序列替换字符串中的占位符

Python 用替换序列替换字符串中的占位符,python,Python,我有一个带有占位符的位置字符串,用作。替换占位符的另一个字符串。我想按顺序替换它们,就像格式说明符一样。用Python做这件事的方法是什么 location = '/tmp/#/dir1/#/some_dirx/dir/var/2/#/dir3' replacements = 'xyz' result = '/tmp/x/dir1/y/some_dirx/dir/var/2/z/dir3' 您应该使用字符串的方法,如下所示: 对于替换中的替换: 位置=位置。更换,更换,1 为了只替换一次占位

我有一个带有占位符的位置字符串,用作。替换占位符的另一个字符串。我想按顺序替换它们,就像格式说明符一样。用Python做这件事的方法是什么

location = '/tmp/#/dir1/#/some_dirx/dir/var/2/#/dir3'
replacements = 'xyz'

result = '/tmp/x/dir1/y/some_dirx/dir/var/2/z/dir3'
您应该使用字符串的方法,如下所示:

对于替换中的替换: 位置=位置。更换,更换,1
为了只替换一次占位符,使用第三个参数count非常重要。否则,每次您找到占位符时,它都会替换。

如果您的位置字符串不包含格式说明符{},您可以执行以下操作:

location = '/tmp/#/dir1/#/some_dirx/dir/var/2/#/dir3'
replacements='xyz'
print(location.replace("#", "{}").format(*replacements))
输出

作为替代方案,您可以使用repl-in可以是一个函数的事实:

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))
输出


如果您在浏览器中搜索Python字符串替换,您会发现可以更好地解释这一点的参考。我不是在每次替换中都使用相同的替换字符串。明白-您依次替换每次出现的字符串。你被困在哪里?你没有试图解决这个问题。有人去哪里了?我的意思是,预期输出与您的定义不匹配。我的错误,更正了。
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