Python中的字符串覆盖优化

Dan*_*rro 5 python string optimization functional-programming python-itertools

我有这个初始字符串.

'bananaappleorangestrawberryapplepear'
Run Code Online (Sandbox Code Playgroud)

并且还有一个带字符串的元组:

('apple', 'plepe', 'leoran', 'lemon')
Run Code Online (Sandbox Code Playgroud)

我想要一个函数,以便从最初的字符串和带有字符串的元组我得到这个:

'bananaxxxxxxxxxgestrawberryxxxxxxxar'
Run Code Online (Sandbox Code Playgroud)

我知道如何通过在每个单词的初始字符串中找到单词然后在所有带有替换单词的初始字符串中逐字符循环来强制执行.

但它不是非常有效和丑陋.我怀疑应该有一些方法可以通过itertools或其他东西以功能的方式更优雅地完成这项工作.如果您知道可以高效执行此操作的Python库,请告诉我们.

更新:贾斯汀皮尔指出我在最初的问题中没有描述的案例.如果一个单词是'aaa'并且'aaaaaa'在初始字符串中,则输出应该看起来像'xxxxxx'.

Ned*_*der 3

import re

words = ('apple', 'plepe', 'leoran', 'lemon')
s = 'bananaappleorangestrawberryapplepear'

x = set()

for w in words:
    for m in re.finditer(w, s):
        i = m.start()
        for j in range(i, i+len(w)):
            x.add(j)

result = ''.join(('x' if i in x else s[i]) for i in range(len(s)))
print result
Run Code Online (Sandbox Code Playgroud)

产生:

bananaxxxxxxxxxgestrawberryxxxxxxxar
Run Code Online (Sandbox Code Playgroud)