You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python优雅实现:用列表元素依次替换字符串中的连续问号

Pythonic方式替换字符串中的问号为列表对应元素

问题场景

现有字符串:

s = "I ? am ? a ? string"

另有一个列表,长度与字符串中问号?的数量一致:

l = ['1', '2', '3']

需要将字符串里的每个?依次替换为列表中的对应元素,最终得到:

s_new = 'I 1 am 2 a 3 string'

解法1:字符串format方法(简洁直接)

把原字符串中的?替换为{}占位符,再用format解包列表元素:

s = "I ? am ? a ? string"
l = ['1', '2', '3']

s_new = s.replace('?', '{}').format(*l)
print(s_new)  # 输出: I 1 am 2 a 3 string

该方法适合问号独立出现的场景,代码简洁易读。

解法2:正则re.sub+迭代器(扩展性强)

如果需要精准匹配问号(比如避免误替换连续问号或包含?的复合字符),可以用正则配合迭代器逐个取列表元素:

import re

s = "I ? am ? a ? string"
l = ['1', '2', '3']

it = iter(l)
s_new = re.sub(r'\?', lambda _: next(it), s)
print(s_new)  # 输出: I 1 am 2 a 3 string

迭代器会保证每次替换都取列表的下一个元素,正则\?精准匹配单个问号,适配更多复杂场景。

内容的提问来源于stack exchange,提问作者njminchin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 07:55:23