使用带有限制的str.replace(),然后循环:
for word in replace_array:
s = s.replace('?', word, 1)
演示:
>>> s = "?, ?, ?, test4, test5"
>>> replace_array = ['test1', 'test2', 'test3']
>>> for word in replace_array:
... s = s.replace('?', word, 1)
...
>>> s
'test1, test2, test3, test4, test5'
如果您的输入字符串不包含任何花括号,您还可以将花括号替换为 {} 占位符并使用 str.format():
s = s.replace('?', '{}').format(*replace_array)
演示:
>>> s = "?, ?, ?, test4, test5"
>>> s.replace('?', '{}').format(*replace_array)
'test1, test2, test3, test4, test5'
如果您的实际输入文本已经包含 { 和 } 字符,您需要先转义这些字符:
s = s.replace('{', '{{').replace('}', '}}').replace('?', '{}').format(*replace_array)
演示:
>>> s = "{?, ?, ?, test4, test5}"
>>> s.replace('{', '{{').replace('}', '}}').replace('?', '{}').format(*replace_array)
'{test1, test2, test3, test4, test5}'