rpartition in Python
*Memos:
- My post explains split() with a string and byte string.
- My post explains rsplit() with a string and byte string.
- My post explains splitlines() with a string and byte string.
- My post explains partition() with a string and byte string.
- My post explains encode() and decode() with a string and byte string.
- My post explains a string.
str.rpartition() and bytes.rpartition() or bytearray.rpartition() can split a string and byte string respectively at the 1st occurrence of a separator, searching from the right to the left as shown below:
*Memos:
- The 1st argument is
sep
(Required-Type:str
forstr.rpartition()
or bytes-like object forbytes.rpartition()
andbytearray.rpartition()
):- It’s the separator of the one or more characters to separate a string or byte string.
- An empty string or byte string cannot be set.
- Don’t use
sep=
.
- It returns a tuple of 3 elements.
- If
sep
isn’t found, a tuple of two empty strings and the original string or byte string itself in order is returned as 3 elements.
<String>:
v = "It's very very good"
print(v.rpartition('er'))
# ("It's very v", 'er', 'y good')
print(v.rpartition('very'))
# ("It's very ", 'very', ' good')
# ↓
print(v.rpartition(' '))
# ("It's very very", ' ', 'good')
# ↓↓
print(v.rpartition(' '))
print(v.rpartition('ER'))
print(v.rpartition('VERY'))
print(v.rpartition('really'))
# ('', '', "It's very very good")
print(v.rpartition(''))
# ValueError: empty separator
v = ''
print(v.rpartition('er'))
# ('', '', '')
<Byte String(UTF-8)>:
bytes():
v = "It's very very good".encode()
v = b"It's very very good"
print(v.rpartition('er'.encode()))
print(v.rpartition(b'er'))
# (b"It's very v", b'er', b'y good')
print(v.rpartition(bytearray('er'.encode())))
# (b"It's very v", bytearray(b'er'), b'y good')
print(v.rpartition('very'.encode()))
print(v.rpartition(b'very'))
# (b"It's very ", b'very', b' good')
print(v.rpartition(bytearray('very'.encode())))
# (b"It's very ", bytearray(b'very'), b' good')
# ↓
print(v.rpartition(' '.encode()))
print(v.rpartition(b' '))
# (b"It's very very", b' ', b'good')
print(v.rpartition(bytearray(' '.encode())))
# (b"It's very very", bytearray(b' '), b'good')
# ↓↓
print(v.rpartition(' '.encode()))
print(v.rpartition(b' '))
print(v.rpartition(bytearray(' '.encode())))
print(v.rpartition('ER'.encode()))
print(v.rpartition(b'ER'))
print(v.rpartition(bytearray('ER'.encode())))
print(v.rpartition('VERY'.encode()))
print(v.rpartition(b'VERY'))
print(v.rpartition(bytearray('VERY'.encode())))
print(v.rpartition('really'.encode()))
print(v.rpartition(b'really'))
print(v.rpartition(bytearray('really'.encode())))
# ('', '', "It's very very good")
print(v.rpartition(''.encode()))
print(v.rpartition(b''))
print(v.rpartition(bytearray(''.encode())))
# ValueError: empty separator
v = ''.encode()
v = b''
print(v.rpartition('er'.encode()))
print(v.rpartition(b'er'))
print(v.rpartition(bytearray('er'.encode())))
# (b'', b'', b'')
bytearray():
v = bytearray("It's very very good".encode())
print(v.rpartition('er'.encode()))
print(v.rpartition(b'er'))
print(v.rpartition(bytearray('er'.encode())))
# (bytearray(b"It's very v"), bytearray(b'er'), bytearray(b'y good'))
print(v.rpartition('very'.encode()))
print(v.rpartition(b'very'))
print(v.rpartition(bytearray('very'.encode())))
# (bytearray(b"It's very "), bytearray(b'very'), bytearray(b' good'))
# ↓
print(v.rpartition(' '.encode()))
print(v.rpartition(b' '))
print(v.rpartition(bytearray(' '.encode())))
# (bytearray(b"It's very very"), bytearray(b' '), bytearray(b'good'))
# ↓↓
print(v.rpartition(' '.encode()))
print(v.rpartition(b' '))
print(v.rpartition(bytearray(' '.encode())))
print(v.rpartition('ER'.encode()))
print(v.rpartition(b'ER'))
print(v.rpartition(bytearray('ER'.encode())))
print(v.rpartition('VERY'.encode()))
print(v.rpartition(b'VERY'))
print(v.rpartition(bytearray('VERY'.encode())))
print(v.rpartition('really'.encode()))
print(v.rpartition(b'really'))
print(v.rpartition(bytearray('really'.encode())))
# (bytearray(b''), bytearray(b''), bytearray(b"It's very very good"))
print(v.rpartition(''.encode()))
print(v.rpartition(b''))
print(v.rpartition(bytearray(''.encode())))
# ValueError: empty separator
v = bytearray(''.encode())
print(v.rpartition('er'.encode()))
print(v.rpartition(b'er'))
print(v.rpartition(bytearray('er'.encode())))
# (bytearray(b''), bytearray(b''), bytearray(b''))