]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
In string.split(), honor maxsplit (if > 0).
authorGuido van Rossum <guido@python.org>
Mon, 1 Dec 1997 15:25:19 +0000 (15:25 +0000)
committerGuido van Rossum <guido@python.org>
Mon, 1 Dec 1997 15:25:19 +0000 (15:25 +0000)
In string.splitfields(), ignore maxsplit if <= 0, rather than ignoring
maxsplit=0 but effectively treating negative numbers the same as
maxsplit=1.  Also made the test for maxsplit slightly more efficient
(set it to the length of the string when <= 0 so the test for its
presence can be omitted from the loop).

Lib/string.py
Lib/stringold.py

index 3f6597899ffe0d8b4c836b19ac08ec52fa4af345..2139a75fb6cb2dc676485c4bb93f3b9fe5f3fc0b 100644 (file)
@@ -74,11 +74,17 @@ def split(s, sep=None, maxsplit=0):
        if sep is not None: return splitfields(s, sep, maxsplit)
        res = []
        i, n = 0, len(s)
+       if maxsplit <= 0: maxsplit = n
+       count = 0
        while i < n:
                while i < n and s[i] in whitespace: i = i+1
                if i == n: break
+               if count >= maxsplit:
+                   res.append(s[i:])
+                   break
                j = i
                while j < n and s[j] not in whitespace: j = j+1
+               count = count + 1
                res.append(s[i:j])
                i = j
        return res
@@ -93,6 +99,7 @@ def splitfields(s, sep=None, maxsplit=0):
        if nsep == 0:
                return [s]
        ns = len(s)
+       if maxsplit <= 0: maxsplit = ns
        i = j = 0
        count = 0
        while j+nsep <= ns:
@@ -100,8 +107,7 @@ def splitfields(s, sep=None, maxsplit=0):
                        count = count + 1
                        res.append(s[i:j])
                        i = j = j + nsep
-                       if (maxsplit and (count >= maxsplit)):
-                           break
+                       if count >= maxsplit: break
                           
                else:
                        j = j + 1
index 3f6597899ffe0d8b4c836b19ac08ec52fa4af345..2139a75fb6cb2dc676485c4bb93f3b9fe5f3fc0b 100644 (file)
@@ -74,11 +74,17 @@ def split(s, sep=None, maxsplit=0):
        if sep is not None: return splitfields(s, sep, maxsplit)
        res = []
        i, n = 0, len(s)
+       if maxsplit <= 0: maxsplit = n
+       count = 0
        while i < n:
                while i < n and s[i] in whitespace: i = i+1
                if i == n: break
+               if count >= maxsplit:
+                   res.append(s[i:])
+                   break
                j = i
                while j < n and s[j] not in whitespace: j = j+1
+               count = count + 1
                res.append(s[i:j])
                i = j
        return res
@@ -93,6 +99,7 @@ def splitfields(s, sep=None, maxsplit=0):
        if nsep == 0:
                return [s]
        ns = len(s)
+       if maxsplit <= 0: maxsplit = ns
        i = j = 0
        count = 0
        while j+nsep <= ns:
@@ -100,8 +107,7 @@ def splitfields(s, sep=None, maxsplit=0):
                        count = count + 1
                        res.append(s[i:j])
                        i = j = j + nsep
-                       if (maxsplit and (count >= maxsplit)):
-                           break
+                       if count >= maxsplit: break
                           
                else:
                        j = j + 1