[text] slightly improve performance of 'extract' functions
by using 'None' instead of '0' as default 'pos' value this only saves a few nanoseconds per call, but still
This commit is contained in:
@@ -100,7 +100,7 @@ def nameext_from_url(url, data=None):
|
||||
return data
|
||||
|
||||
|
||||
def extract(txt, begin, end, pos=0):
|
||||
def extract(txt, begin, end, pos=None):
|
||||
"""Extract the text between 'begin' and 'end' from 'txt'
|
||||
|
||||
Args:
|
||||
@@ -125,7 +125,7 @@ def extract(txt, begin, end, pos=0):
|
||||
last = txt.index(end, first)
|
||||
return txt[first:last], last+len(end)
|
||||
except Exception:
|
||||
return None, pos
|
||||
return None, 0 if pos is None else pos
|
||||
|
||||
|
||||
def extr(txt, begin, end, default=""):
|
||||
@@ -137,14 +137,14 @@ def extr(txt, begin, end, default=""):
|
||||
return default
|
||||
|
||||
|
||||
def rextract(txt, begin, end, pos=-1):
|
||||
def rextract(txt, begin, end, pos=None):
|
||||
try:
|
||||
lbeg = len(begin)
|
||||
first = txt.rindex(begin, 0, pos)
|
||||
first = txt.rindex(begin, None, pos)
|
||||
last = txt.index(end, first + lbeg)
|
||||
return txt[first + lbeg:last], first
|
||||
except Exception:
|
||||
return None, pos
|
||||
return None, -1 if pos is None else pos
|
||||
|
||||
|
||||
def rextr(txt, begin, end, pos=None, default=""):
|
||||
@@ -156,7 +156,7 @@ def rextr(txt, begin, end, pos=None, default=""):
|
||||
return default
|
||||
|
||||
|
||||
def extract_all(txt, rules, pos=0, values=None):
|
||||
def extract_all(txt, rules, pos=None, values=None):
|
||||
"""Calls extract for each rule and returns the result in a dict"""
|
||||
if values is None:
|
||||
values = {}
|
||||
@@ -164,10 +164,10 @@ def extract_all(txt, rules, pos=0, values=None):
|
||||
result, pos = extract(txt, begin, end, pos)
|
||||
if key:
|
||||
values[key] = result
|
||||
return values, pos
|
||||
return values, 0 if pos is None else pos
|
||||
|
||||
|
||||
def extract_iter(txt, begin, end, pos=0):
|
||||
def extract_iter(txt, begin, end, pos=None):
|
||||
"""Yield values that would be returned by repeated calls of extract()"""
|
||||
try:
|
||||
index = txt.index
|
||||
@@ -182,7 +182,7 @@ def extract_iter(txt, begin, end, pos=0):
|
||||
return
|
||||
|
||||
|
||||
def extract_from(txt, pos=0, default=""):
|
||||
def extract_from(txt, pos=None, default=""):
|
||||
"""Returns a function object that extracts from 'txt'"""
|
||||
def extr(begin, end, index=txt.index, txt=txt):
|
||||
nonlocal pos
|
||||
|
||||
Reference in New Issue
Block a user