什么是更快的操作,re.match/search 或 str.find? [英] What's a faster operation, re.match/search or str.find?

查看:58
本文介绍了什么是更快的操作,re.match/search 或 str.find?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对于一次性字符串搜索,使用 str.find/rfind 是否比使用 re.match/search 更快?

For one off string searches, is it faster to simply use str.find/rfind than to use re.match/search?

也就是说,对于给定的字符串 s,我应该使用:

That is, for a given string, s, should I use:

if s.find('lookforme') > -1:
    do something

if re.match('lookforme',s):
    do something else

?

推荐答案

问题:使用 timeit 最好回答哪个更快.

The question: which is faster is best answered by using timeit.

from timeit import timeit
import re

def find(string, text):
    if string.find(text) > -1:
        pass

def re_find(string, text):
    if re.match(text, string):
        pass

def best_find(string, text):
    if text in string:
       pass

print timeit("find(string, text)", "from __main__ import find; string='lookforme'; text='look'")  
print timeit("re_find(string, text)", "from __main__ import re_find; string='lookforme'; text='look'")  
print timeit("best_find(string, text)", "from __main__ import best_find; string='lookforme'; text='look'")  

输出为:

0.441393852234
2.12302494049
0.251421928406

因此,您不仅应该使用 in 运算符,因为它更易于阅读,而且速度也更快.

So not only should you use the in operator because it is easier to read, but because it is faster also.

这篇关于什么是更快的操作,re.match/search 或 str.find?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆