我想将一个字符串中的每个字符实例替换为另一个字符串中相同索引处的字符。如果该索引中不存在任何字符,请保持原样。
这是我的列表理解解决方案(Python 3):
string1 = "food is delicious"
string2 = "orange is not delicious"
string3 = "".join([string2[i] if i<len(string2) and c=="o" else c for i, c in enumerate(string1)])
print(string3)
结果
frad is delicidus
感觉应该有更好的方法,例如以某种方式使用str.replace。有什么想法吗?
答案 0 :(得分:2)
你可以itertools.zip_longest
迭代两个字符串,直到它们中最长的字符串耗尽。较小的字符串将填充fillvalue
>>> s1 = "food is delicious"
>>> s2 = "orange is not delicious"
>>> from itertools import zip_longest
>>> "".join([c2 if (c1 == 'o' and c2) else c1 for c1, c2 in zip_longest(s1, s2, fillvalue='')])
'frad is delicidus'
答案 1 :(得分:1)
我发现最短的解决方案:
a="food is delicious"
b="orange is not delicious"
''.join(y if x is 'o' else x for (x, y) in zip(a, b))
>>>> frad is delicidus
请注意,结果字符串将具有两者中较短者的长度,因为否则将无法定义用剩余o
替换的内容。