为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

至尊宝的传说 2021-06-07 08:08:57
我有一个带占位符的字符串,我想将索引附加到占位符的 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 中这样做有更好的解决方案吗?
查看完整描述

2 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

一个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'


查看完整回答
反对 回复 2021-06-08
?
函数式编程

TA贡献1807条经验 获得超9个赞

使用@Ajax1234 的答案,我可以用 {} 替换占位符,并使用数组进行格式化。


my_text = 'This param{} is param{}'

print(my_text.format(i for i in range(len(params))]))


查看完整回答
反对 回复 2021-06-08
  • 2 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信