用到目前为止出现的次数替换字符串的每次出现

我有一个带占位符的字符串,我想将索引附加到占位符的 wach。


例如


'This @placeholder is @placeholder'

应该成为


'This @param0 is @param1'

假设我有一个包含 2 个值的参数列表(匹配 @placeholder 出现的次数)。


一种可选的解决方案是。


result = ''

parts = my_text.split('@placeholder')

for i in range(0, len(params)):

  result += '{}@param{}'.format(parts[i], i)

return result

另一种选择是继续用当前索引替换占位符,但这意味着扫描字符串 len(params) 次。


for i in range(0, len(params)):

  my_text = my_text.replace('@placeholder', '@param{}'.format(i), 1)

在 python 中这样做有更好的解决方案吗?


至尊宝的传说
浏览 167回答 2
2回答

萧十郎

一个re.sub带有回调和计数器的简单解决方案怎么样?>>> import itertools>>> c = itertools.count()>>> text = 'This @placeholder is @placeholder'>>> re.sub(r'\b@placeholder\b', lambda x: f'@param{next(c)}', text)'This @param0 is @param1'

函数式编程

使用@Ajax1234 的答案,我可以用 {} 替换占位符,并使用数组进行格式化。my_text = 'This param{} is param{}'print(my_text.format(i for i in range(len(params))]))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python