mirror of
https://github.com/python/cpython.git
synced 2026-01-04 06:22:20 +00:00
Fixed #1969: split and rsplit in bytearray are inconsistent
This commit is contained in:
parent
d4cb56d4e8
commit
7b876158dc
3 changed files with 15 additions and 4 deletions
|
|
@ -706,7 +706,7 @@ def test_rsplit_whitespace(self):
|
|||
self.assertEqual(b.rsplit(None, 2), [b'arf', b'barf'])
|
||||
self.assertEqual(b' a bb c '.rsplit(None, 0), [b' a bb c'])
|
||||
self.assertEqual(b' a bb c '.rsplit(None, 1), [b' a bb', b'c'])
|
||||
self.assertEqual(b' a bb c '.rsplit(None,2), [b' a', b'bb', b'c'])
|
||||
self.assertEqual(b' a bb c '.rsplit(None, 2), [b' a', b'bb', b'c'])
|
||||
self.assertEqual(b' a bb c '.rsplit(None, 3), [b'a', b'bb', b'c'])
|
||||
|
||||
def test_rsplit_bytearray(self):
|
||||
|
|
@ -715,6 +715,15 @@ def test_rsplit_bytearray(self):
|
|||
def test_rsplit_string_error(self):
|
||||
self.assertRaises(TypeError, b'a b'.rsplit, ' ')
|
||||
|
||||
def test_rsplit_unicodewhitespace(self):
|
||||
b = b"\x09\x0A\x0B\x0C\x0D\x1C\x1D\x1E\x1F"
|
||||
self.assertEqual(b.split(), [b'\x1c\x1d\x1e\x1f'])
|
||||
self.assertEqual(b.rsplit(), [b'\x1c\x1d\x1e\x1f'])
|
||||
ba = bytearray(b)
|
||||
self.assertEqual(ba.split(), [bytearray(b'\x1c\x1d\x1e\x1f')])
|
||||
self.assertEqual(ba.rsplit(), [bytearray(b'\x1c\x1d\x1e\x1f')])
|
||||
|
||||
|
||||
def test_partition(self):
|
||||
b = b'mississippi'
|
||||
self.assertEqual(b.partition(b'ss'), (b'mi', b'ss', b'issippi'))
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@ What's New in Python 3.0a3?
|
|||
Core and Builtins
|
||||
-----------------
|
||||
|
||||
- Issue #1969: split and rsplit in bytearray are inconsistent
|
||||
|
||||
- map() and itertools.imap() no longer accept None for the first argument.
|
||||
Use zip() instead.
|
||||
|
||||
|
|
|
|||
|
|
@ -2388,16 +2388,16 @@ rsplit_whitespace(const char *s, Py_ssize_t len, Py_ssize_t maxcount)
|
|||
|
||||
for (i = j = len - 1; i >= 0; ) {
|
||||
/* find a token */
|
||||
while (i >= 0 && Py_UNICODE_ISSPACE(s[i]))
|
||||
while (i >= 0 && ISSPACE(s[i]))
|
||||
i--;
|
||||
j = i;
|
||||
while (i >= 0 && !Py_UNICODE_ISSPACE(s[i]))
|
||||
while (i >= 0 && !ISSPACE(s[i]))
|
||||
i--;
|
||||
if (j > i) {
|
||||
if (maxcount-- <= 0)
|
||||
break;
|
||||
SPLIT_ADD(s, i + 1, j + 1);
|
||||
while (i >= 0 && Py_UNICODE_ISSPACE(s[i]))
|
||||
while (i >= 0 && ISSPACE(s[i]))
|
||||
i--;
|
||||
j = i;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue