我正在寻找最快的方法来对某些字母集的每次出现执行正则表达式替换,并将所有结果放入列表或集合中。 例如,假设我想将字符串“hi foo hi bar hi ho”中出现的所有“hi”替换为“yo”:
>>> replace_each('hi foo hi bar hi ho', 'hi', 'yo')
['yo foo hi bar hi ho', 'hi foo yo bar hi ho', 'hi foo hi bar yo ho']
我知道我可以通过迭代来做到这一点:
def replace_each(some_string, to_replace, replace_with):
solutions = []
window = len(some_string)
for idx in range(len(some_string)-window):
if some_string[idx:idx+window] == to_replace
solutions.append(some_string[:idx] + replace_with + some_string[idx+window:])
return solutions
但是,我必须经常这样做,所以我正在寻找更快的东西,可能使用正则表达式。
最佳答案
import re
a = 'hi foo hi bar hi ho'
old_stuff = "hi"
new_stuff = "yo"
[a[:m.start()] + new_stuff + a[m.end():] for m in re.finditer(old_stuff, a)]
您可以围绕它创建一个函数,将要查找的部分和要插入的部分视为参数。
关于python - 创建一个由每个正则表达式替换一个字符串组成的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26370864/