我正在寻找一种更python的方法,用列表中的值替换字符串中已知长度的占位符。应按顺序更换,且只能使用一次。例如,使用以下值:
replaceVals = ['foo', 'bar']
origStr = 'I went to the ? to get ?'
我希望得到:
^{pr2}$我可以通过下面的循环获得所需的结果,但我觉得应该有一个更好的方法来实现这一点,而不是使用这样的循环。在
for i in range(len(replaceVals)):
origStr = origStr.replace('?', replaceVals[i], 1)
可以使用字符串的
replace
和format
方法,如下所示:这里有一个使用生成器的想法:
输出:
^{pr2}$这样做的好处是
replaceVals
中的项数不必与origStr
中要替换的项数匹配:但是,在这些情况下使用字符串格式会导致错误。在
@roganjosh在评论中的回答可能是最好的,尽管这篇文章非常抽象,不清楚他的真实情况。我很好奇是否有人能用在Python3中出现的f弦来做这个。与@roganjosh相比,f-string没有@roganjosh更吸引人的是,通过
.format()
调用解包替换序列非常简单。也就是说,如果你想试试f-string,这样的方法就可以了:相关问题 更多 >
编程相关推荐