mirror of
https://github.com/python/cpython.git
synced 2025-08-30 05:35:08 +00:00
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).
This commit is contained in:
parent
58a88b3e34
commit
06ba34c5d4
2 changed files with 16 additions and 4 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue