Python 用替换序列替换字符串中的占位符
我有一个带有占位符的位置字符串,用作。替换占位符的另一个字符串。我想按顺序替换它们,就像格式说明符一样。用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 为了只替换一次占位
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