我有一个字符串,其中包含许多单一模式的重复,如
a = 'eresQQQutnohnQQQjkhjhnmQQQlkj'
我有另一个字符串,如
b = 'rerTTTytu'
我想用整个第二个字符串替换为QQQ'和TTT',我想在这种情况下找到3个不同的结果:
'ererTTTytuohnQQQjkhjhnmQQQlkj'
'eresQQQutnrerTTTytujhnmQQQlkj'
'eresQQQutnohnQQQjkhjrerTTTytu'
我尝试过使用re.sub
re.sub('\w{3}QQQ\w{3}' ,b,a)
但我只获得了第一个,而且我不知道如何获得其他两个解决方案。
答案 0 :(得分:2)
编辑:根据您的要求,“QQQ”周围的两个字符也将被替换。
我不知道这是否是问题的最优雅或最简单的解决方案,但它确实有效:
import re
# Find all occurences of ??QQQ?? in a - where ? is any character
matches = [x.start() for x in re.finditer('\S{2}QQQ\S{2}', a)]
# Replace each ??QQQ?? with b
results = [a[:idx] + re.sub('\S{2}QQQ\S{2}', b, a[idx:], 1) for idx in matches]
print(results)
<强>输出强>
['errerTTTytunohnQQQjkhjhnmQQQlkj',
'eresQQQutnorerTTTytuhjhnmQQQlkj',
'eresQQQutnohnQQQjkhjhrerTTTytuj']
由于你没有指定输出格式,我只是把它放在一个列表中。