summaryrefslogtreecommitdiffstats
path: root/Lib/string.py
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1997-10-20 23:31:15 (GMT)
committerGuido van Rossum <guido@python.org>1997-10-20 23:31:15 (GMT)
commit1510565cb5efb22604bd81696ebc12ad5781017e (patch)
treed05cd82fb478537dbe888fee1eb0829678e113f9 /Lib/string.py
parentdd65975ac716a9a3beaa80189ab72ce0f88779e4 (diff)
downloadcpython-1510565cb5efb22604bd81696ebc12ad5781017e.zip
cpython-1510565cb5efb22604bd81696ebc12ad5781017e.tar.gz
cpython-1510565cb5efb22604bd81696ebc12ad5781017e.tar.bz2
Add optional 4th argument to count(), matching find() etc.
Also change all occurrences of "x == None" to "x is None" (not that it matters much, these functions are all reimplemented in strop -- but count() is not).
Diffstat (limited to 'Lib/string.py')
-rw-r--r--Lib/string.py21
1 files changed, 14 insertions, 7 deletions
diff --git a/Lib/string.py b/Lib/string.py
index 99e7275..5cf5b6f 100644
--- a/Lib/string.py
+++ b/Lib/string.py
@@ -121,7 +121,7 @@ def joinfields(words, sep = ' '):
# Find substring, raise exception if not found
def index(s, sub, i = 0, last=None):
- if last == None: last = len(s)
+ if last is None: last = len(s)
res = find(s, sub, i, last)
if res < 0:
raise ValueError, 'substring not found in string.index'
@@ -129,17 +129,24 @@ def index(s, sub, i = 0, last=None):
# Find last substring, raise exception if not found
def rindex(s, sub, i = 0, last=None):
- if last == None: last = len(s)
+ if last is None: last = len(s)
res = rfind(s, sub, i, last)
if res < 0:
raise ValueError, 'substring not found in string.index'
return res
# Count non-overlapping occurrences of substring
-def count(s, sub, i = 0):
- if i < 0: i = max(0, i + len(s))
+def count(s, sub, i = 0, last=None):
+ Slen = len(s) # cache this value, for speed
+ if last is 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
if n == 0: return m-i
r = 0
while i < m:
@@ -153,7 +160,7 @@ def count(s, sub, i = 0):
# Find substring, return -1 if not found
def find(s, sub, i = 0, last=None):
Slen = len(s) # cache this value, for speed
- if last == None:
+ if last is None:
last = Slen
elif last < 0:
last = max(0, last + Slen)
@@ -170,7 +177,7 @@ def find(s, sub, i = 0, last=None):
# Find last substring, return -1 if not found
def rfind(s, sub, i = 0, last=None):
Slen = len(s) # cache this value, for speed
- if last == None:
+ if last is None:
last = Slen
elif last < 0:
last = max(0, last + Slen)