add 'default' argument to 'text.extr()'
This commit is contained in:
@@ -120,13 +120,13 @@ def extract(txt, begin, end, pos=0):
|
|||||||
return None, pos
|
return None, pos
|
||||||
|
|
||||||
|
|
||||||
def extr(txt, begin, end):
|
def extr(txt, begin, end, default=""):
|
||||||
"""Stripped-down version of 'extract()'"""
|
"""Stripped-down version of 'extract()'"""
|
||||||
try:
|
try:
|
||||||
first = txt.index(begin) + len(begin)
|
first = txt.index(begin) + len(begin)
|
||||||
return txt[first:txt.index(end, first)]
|
return txt[first:txt.index(end, first)]
|
||||||
except (ValueError, TypeError, AttributeError):
|
except (ValueError, TypeError, AttributeError):
|
||||||
return ""
|
return default
|
||||||
|
|
||||||
|
|
||||||
def rextract(txt, begin, end, pos=-1):
|
def rextract(txt, begin, end, pos=-1):
|
||||||
|
|||||||
@@ -210,6 +210,11 @@ class TestText(unittest.TestCase):
|
|||||||
self.assertEqual(f(txt, "<", ">"), "a")
|
self.assertEqual(f(txt, "<", ">"), "a")
|
||||||
self.assertEqual(f(txt, "><", ">"), "b")
|
self.assertEqual(f(txt, "><", ">"), "b")
|
||||||
|
|
||||||
|
# 'default' argument
|
||||||
|
self.assertEqual(f(txt, "<", "X", None), None)
|
||||||
|
self.assertEqual(f(txt, "<", "X", default=None), None)
|
||||||
|
self.assertEqual(f(txt, "<", "X", default=()), ())
|
||||||
|
|
||||||
# invalid arguments
|
# invalid arguments
|
||||||
for value in INVALID:
|
for value in INVALID:
|
||||||
self.assertEqual(f(value, "<" , ">") , "")
|
self.assertEqual(f(value, "<" , ">") , "")
|
||||||
|
|||||||
Reference in New Issue
Block a user