How do I remove a substring from the end of a string (remove a suffix of the string)?
python, string
Solution
`strip` doesn't mean "remove this substring". `x.strip(y)` treats `y` as a set of characters and strips any characters in that set from both ends of `x`.
On Python 3.9 and newer you can use the `removeprefix` and `removesuffix` methods to remove an entire substring from either side of the string:
url = 'abcdc.com'
url.removesuffix('.com') # Returns 'abcdc'
url.removeprefix('abcdc.') # Returns 'com'
The relevant Python Enhancement Proposal is PEP-616.
On Python 3.8 and older you can use `endswith` and slicing:
url = 'abcdc.com'
if url.endswith('.com'):
url = url[:-4]
Or a regular expression:
import re
url = 'abcdc.com'
url = re.sub('\.com$', '', url)
Problem
I have the following code: ``` url = 'abcdc.com' print(url.strip('.com')) ``` I expected: `abcdc` I got: `abcd` Now I do ``` url.rsplit('.com', 1) ``` Is there a better way? See How do the .strip/.rstrip/.lstrip string methods work in Python? for a specific explanation of what the first attempt is doing.