diff Lib/string.py @ 6691:d790fe25e148 legacy-trunk

In string.split(), honor maxsplit (if > 0). 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).
author Guido van Rossum <guido@python.org>
date Mon, 01 Dec 1997 15:25:19 +0000
parents 24da035ceb6e
children 8ef481c7c3af
line wrap: on
line diff
--- a/Lib/string.py	Mon Dec 01 04:30:19 1997 +0000
+++ b/Lib/string.py	Mon Dec 01 15:25:19 1997 +0000
@@ -74,11 +74,17 @@
 	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 @@
 	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 @@
 			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