Python:“输入"的速度vs 正则表达式 [英] Python: speed for "in" vs regular expression

查看:56
本文介绍了Python:“输入"的速度vs 正则表达式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当判断一个子串的实例是否存在于一个更大的字符串中时,

我正在考虑两种选择:

(1)

如果bbbaaaaaabbb"中的aaaa":做一点事()

(2)

pattern = re.compile("aaaa")如果 pattern.search("bbbaaaaaabbb"):做一点事()

两者中哪个更有效&更快(考虑到字符串的大小很大)??

还有其他更快的选择吗??

谢谢

解决方案

选项 (1) 肯定更快.对于未来,做这样的事情来测试它:

<预><代码>>>>导入时间,重新>>>如果属实:... s = time.time()......bbbaaaaaabbb"中的aaaa"... 打印 time.time()-s...真的1.78813934326e-05>>>如果属实:... s = time.time()... pattern = re.compile("aaaa")... pattern.search("bbbaaaaaabbb")... 打印 time.time()-s...<_sre.SRE_Match 对象在 0xb74a91e0>0.0143280029297

gnibbler 的方法更好,我从来没有真正玩过解释器选项,所以我不知道那个.

When determining whether an instance of substring exists in a larger string,

I am considering two options:

(1)

if "aaaa" in "bbbaaaaaabbb":
    dosomething()

(2)

pattern = re.compile("aaaa")
if pattern.search("bbbaaaaaabbb"):
    dosomething()

Which of the two are more efficient & faster (considering the size of the string is huge)??

Is there any other option that is faster??

Thanks

解决方案

Option (1) definitely is faster. For the future, do something like this to test it:

>>> import time, re
>>> if True:
...     s = time.time()
...     "aaaa" in "bbbaaaaaabbb"
...     print time.time()-s
... 
True
1.78813934326e-05

>>> if True:
...     s = time.time()
...     pattern = re.compile("aaaa")
...     pattern.search("bbbaaaaaabbb")
...     print time.time()-s
... 
<_sre.SRE_Match object at 0xb74a91e0>
0.0143280029297

gnibbler's way of doing this is better, I never really played around with interpreter options so I didn't know about that one.

这篇关于Python:“输入"的速度vs 正则表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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