如何优雅地将一个字符串中的某些字符替换为同一索引中另一个字符串中的字符?

时间:2016-12-07 06:39:15

标签: python string list python-3.x

我想将一个字符串中的每个字符实例替换为另一个字符串中相同索引处的字符。如果该索引中不存在任何字符,请保持原样。

这是我的列表理解解决方案(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。有什么想法吗?

2 个答案:

答案 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替换的内容。