如何使用regex sub到字符串列表中的不同项?

时间:2018-02-14 06:55:29

标签: python regex python-3.x

假设我有string list sList[ 'aaa', 'bbb', ccc'] 我想用re.sub改变第一场比赛'aaa',第二场比赛'bbb',第三场比赛'ccc'。 (将数字与列表中的索引号匹配)

stringToSearch = 'zzz is zzz is zzz'

我尝试过使用

re.sub( 'zzz', sList.pop(0), stringToSearch )

但事实证明用'aaa'取代所有比赛。

BTW,我正在使用Python 3.6和重新模块。

1 个答案:

答案 0 :(得分:4)

在您的情况下,只需使用replace()计数1:

for s in sList:
    stringToSearch = stringToSearch.replace('zzz', s, 1)

re.sub()类似,将计数指定为1:

for s in sList:
    stringToSearch = re.sub( 'zzz', s, stringToSearch, 1 )

或直接使用re.sub()

re.sub('zzz', lambda _: sList.pop(0), stringToSearch, len(sList) or -1)

如果len(sList) or -1为空且re.sub()为0,则sList count的原因仍会引发异常,此-1可以取消此异常。< / p>