python - 创建一个由每个正则表达式替换一个字符串组成的列表?

标签 python

我正在寻找最快的方法来对某些字母集的每次出现执行正则表达式替换,并将所有结果放入列表或集合中。 例如,假设我想将字符串“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/

相关文章:

python - 如何避免从 python Pandas 数据框中的 msb 中删除 0

python - 用 julia 计算主值积分

java - 我可以使用 jython 将 python 库导入到 java 代码中吗?

python - 从文本文件加载列表

python - sklearn-线性回归 : could not convert string to float: '--'

python - 使用 Matplotlib 进行 3D 绘图时 cmath 的问题

python - 均匀调度多个重复作业的算法

python - 事务和 sqlalchemy

python - 你如何将 csrf 验证添加到 Pyramid ?

python - python中用箭头增加日期不改变属性