我希望看看这段代码是否可以优化。
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")
答案 0 :(得分:4)
在尝试优化代码之前,您可能应该修复一些代码问题。
首先,它没有文档,命名没有帮助。我假设它试图在开始和结束标记之间提取一个字符串。
其次,即使找不到开始和/或结束标记,它也会给出明显的匹配:
>>> print gB("abc", "d", "e")
ab
在这种情况下,引发异常或返回None会好得多。
至于速度,我怀疑你找到字符串比使用内置字符串查找功能更快。它们是用C语言编写的,毫无疑问需要花费大量时间来优化它们。如果有人可以在Python中更快地实现字符串查找,那么编写find的人需要返回并再次查看他们的代码。
答案 1 :(得分:1)
这个怎么样?
import re
def gB(a, b, c):
return (re.findall('%s(.*?)%s' % (b, c), a) or [''])[0]
如果你在谈论较小的代码,我认为re模块可以帮助你。