首页 > 解决方案 > Python:用变量替换完全匹配的子字符串

问题描述

我有一个字符串列表等'cdbbdbda', 'fgfghjkbd', 'cdbbd'。我还有一个从另一个字符串列表馈送的变量。我需要的是替换第一个列表的字符串中的子字符串,例如bby z,前提是它前面有来自变量列表的子字符串,所有其他事件都被触及。我有的:

a = ['cdbbdbda', 'fgfghjkbd', 'cdbbd']
c = ['d', 'f', 'l']

我所做的:

for i in a:
    for j in c:
        if j+'b' in i:
            i = re.sub('b', 'z', i)

我需要的:

'cdzbdzda'
'fgfghjkbd'
'cdzbd'

我得到什么:

'cdzzdzda'
'fgfghjkbd'
'cdzzd'

'b' 的所有实例都被替换。我是新手,非常欢迎任何帮助。在 Stackoverflow 上寻找答案我发现了许多基于单词边界的正则表达式解决方案或基于 的解决方案restr.replacecount我不能使用它,因为字符串的长度和 'b' 的出现次数可能会有所不同。

标签: pythonregexstring

解决方案


我想如果你包含j在查找和替换中,你会得到你想要的。

>>> for i in a:
...     for j in c:
...         i = re.sub(j+'b', j+'z', i)
...     print i
... 
cdzbdzda
fgfghjkbd
cdzbd
>>> 

我添加print i是因为您的循环不会进行就地更改,因此如果没有该输出,就无法查看进行了哪些替换。


推荐阅读