Mercurial > cpython-lru_cache-weakref
diff Lib/string.py @ 5188:3ec3d8807f9e legacy-trunk
Add optional 4th argument to [r]find and [r]index (end of slice).
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Fri, 14 Mar 1997 04:13:56 +0000 |
| parents | 951ed9a83f57 |
| children | 5b407e0cbc71 |
line wrap: on
line diff
--- a/Lib/string.py Fri Mar 14 04:12:52 1997 +0000 +++ b/Lib/string.py Fri Mar 14 04:13:56 1997 +0000 @@ -120,15 +120,17 @@ return res[len(sep):] # Find substring, raise exception if not found -def index(s, sub, i = 0): - res = find(s, sub, i) +def index(s, sub, i = 0, last=None): + if last == None: last = len(s) + res = find(s, sub, i, last) if res < 0: raise ValueError, 'substring not found in string.index' return res # Find last substring, raise exception if not found -def rindex(s, sub, i = 0): - res = rfind(s, sub, i) +def rindex(s, sub, i = 0, last=None): + if last == None: last = len(s) + res = rfind(s, sub, i, last) if res < 0: raise ValueError, 'substring not found in string.index' return res @@ -149,20 +151,34 @@ return r # Find substring, return -1 if not found -def find(s, sub, i = 0): - if i < 0: i = max(0, i + len(s)) +def find(s, sub, i = 0, last=None): + Slen = len(s) # cache this value, for speed + if last == None: + last = Slen + elif last < 0: + last = max(0, last + Slen) + elif last > Slen: + last = Slen + if i < 0: i = max(0, i + Slen) n = len(sub) - m = len(s) + 1 - n + m = last + 1 - n while i < m: if sub == s[i:i+n]: return i i = i+1 return -1 # Find last substring, return -1 if not found -def rfind(s, sub, i = 0): - if i < 0: i = max(0, i + len(s)) +def rfind(s, sub, i = 0, last=None): + Slen = len(s) # cache this value, for speed + if last == None: + last = Slen + elif last < 0: + last = max(0, last + Slen) + elif last > Slen: + last = Slen + if i < 0: i = max(0, i + Slen) n = len(sub) - m = len(s) + 1 - n + m = last + 1 - n r = -1 while i < m: if sub == s[i:i+n]: r = i
