假设我有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
和重新模块。
答案 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>