Python:为什么正则表达式比replace()方法慢?

Vit*_*mar 2 python regex

我接下来有两个代码块:

def replace_re(text):
    start = time.time()
    new_text = re.compile(r'(\n|\s{4})').sub('', text)
    finish = time.time()
    return finish - start

def replace_builtin(text):
    start = time.time()
    new_text = text.replace('\n', '').replace('    ', '')
    finish = time.time()
    return finish - start
Run Code Online (Sandbox Code Playgroud)

比我用文本参数调用这两个函数(一个网页的~500kb源代码).我认为replace_re()会更快,但结果是下一个:

  1. replace_builtin() ~0.008秒
  2. replace_re()~0.035秒(慢了4.5倍 !!!)

这是为什么?

lan*_*nzz 7

因为正则表达式是 4.5倍不是一个固定字符串替换更加复杂.

  • 这可能是真的,但您没有提供该声明的任何支持信息.这不是非常有用,并且没有以有意义的方式回答OP问题. (4认同)

Jon*_*nts 5

因为re必须生成FSM.然后用它来处理字符串.虽然替换可以使用更接近lib/OS级别的底层字符串处理函数.