【发布时间】:2022-11-30 14:17:18
【问题描述】:
我有一个字符串,例如:
s = "I ? am ? a ? string"
我有一个长度等于字符串中 ? 数量的列表:
l = ['1', '2', '3']
返回 s 并将每个连续的 ? 替换为 l 中的值的 pythonic 方法是什么?,例如:
s_new = 'I 1 am 2 a 3 string'
【问题讨论】:
标签: python
我有一个字符串,例如:
s = "I ? am ? a ? string"
我有一个长度等于字符串中 ? 数量的列表:
l = ['1', '2', '3']
返回 s 并将每个连续的 ? 替换为 l 中的值的 pythonic 方法是什么?,例如:
s_new = 'I 1 am 2 a 3 string'
【问题讨论】:
标签: python
# Method 1
s = "I ? am ? a ? string"
l = ['1', '2', '3']
for i in l:
s = s.replace('?', i, 1)
# Output: I 1 am 2 a 3 string
# Method 2
from functools import reduce
s = "I ? am ? a ? string"
l = ['1', '2', '3']
s = reduce(lambda x, y: x.replace('?', y, 1), l, s)
# Output: I 1 am 2 a 3 string
【讨论】:
你可以使用zip_longest和join:
>>> s = 'I ? am ? a ? string'
>>> l = ['1', '2', '3']
>>> ''.join(x for xs in zip_longest(s.split('?'), l, fillvalue='') for x in xs)
'I 1 am 2 a 3 string'
【讨论】: