如何用列表中的值依次替换字符串中的重复占位符?
Python实现占位符依次替换需求
你原来的思路有问题:直接用Sentence.replace("?", Color[0])会一次性把所有?替换成同一个颜色,没法实现依次替换的效果。下面给你两种可行的实现方式:
方法一:循环+replace指定替换次数
利用str.replace()的第三个参数count,每次只替换第一个出现的?,遍历颜色列表完成依次替换:
Sentence = "Person A has ? baloon, Person B has ? baloon Person C has ? baloon" Color = ["Black", "Blue", "Red", "Green"] final_sentence = Sentence for color in Color: # count=1 表示只替换第一个匹配的? final_sentence = final_sentence.replace("?", color, 1) print(final_sentence) # 输出:Person A has Black baloon, Person B has Blue baloon Person C has Red baloon
如果颜色列表元素个数多于占位符数量,多出来的颜色会被忽略;如果占位符数量多于颜色元素,剩余的?会保留在字符串中。
方法二:正则表达式+自定义替换函数
用re.sub()配合计数器,逐个替换每个?:
import re Sentence = "Person A has ? baloon, Person B has ? baloon Person C has ? baloon" Color = ["Black", "Blue", "Red", "Green"] count = 0 def replace_placeholder(match): nonlocal count if count < len(Color): result = Color[count] count += 1 return result # 颜色用完后,保留原占位符 return match.group(0) final_sentence = re.sub(r'\?', replace_placeholder, Sentence) print(final_sentence)
这种方式更灵活,适合复杂的占位符匹配场景。
内容的提问来源于stack exchange,提问作者Dipen Jethva
相关产品推荐
相关产品推荐

