开发者

Python: Help Me optimize this code.

I am looking to see if this code can be optimized.

def gB(a,b,c):  
    x=len(b)  
    d=a.find(b)+x  
    e=a.find(c,d)  
    return a[d:e]  

print gB开发者_如何学运维("abc","a","c")


There's a couple of problems with your code that you probably should fix before trying to optimize it.

Firstly, it's undocumented and the naming is not helpful. I assume it is trying to extract a string between start and end markers.

Secondly, it gives an apparent match even if the start and/or end markers aren't found:

>>> print gB("abc", "d", "e")
ab

It would be much better to raise an exception or return None in this case.

As for the speed, I doubt you can get faster for finding strings than using the builtin string finding functions. They are written in C and no doubt had a lot of time spent optimizing them. If someone can implement string finding faster in Python then the people who wrote find need to go back and look at their code again.


What about this?

import re

def gB(a, b, c):
    return (re.findall('%s(.*?)%s' % (b, c), a) or [''])[0]

If you are talking about smaller code, I think the re module can help you.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜