Is it possible to use the python command rstrip
so that it does only remove one exact string and does not take all letters separately?
I was confused when this happened:
>>>"Boat.txt".rstrip(".txt") >>>'Boa'
What I expected was:
>>>"Boat.txt".rstrip(".txt") >>>'Boat'
Can I somehow use rstrip and respect the order, so that I get the second outcome?
The rstrip() method returns a copy of a string with the trailing characters removed. The rstrip() method has one optional argument chars . The chars argument is a string that specifies a set of characters which the rstrip() method will remove from the copy of the str .
There are multiple ways to remove whitespace and other characters from a string in Python. The most commonly known methods are strip() , lstrip() , and rstrip() . Since Python version 3.9, two highly anticipated methods were introduced to remove the prefix or suffix of a string: removeprefix() and removesuffix() .
rstrip() The rstrip() method returns a copy of the string by removing the trailing characters specified as argument. If the characters argument is not provided, all trailing whitespaces are removed from the string.
You're using wrong method. Use str.replace
instead:
>>> "Boat.txt".replace(".txt", "") 'Boat'
NOTE: str.replace
will replace anywhere in the string.
>>> "Boat.txt.txt".replace(".txt", "") 'Boat'
To remove the last trailing .txt
only, you can use regular expression:
>>> import re >>> re.sub(r"\.txt$", "", "Boat.txt.txt") 'Boat.txt'
If you want filename without extension, os.path.splitext
is more appropriate:
>>> os.path.splitext("Boat.txt") ('Boat', '.txt')
Starting with Python 3.9, use .removesuffix()
:
"Boat.txt".removesuffix(".txt")
On earlier versions of Python, you'll have to either define it yourself:
def removesuffix(s, suf): if suf and s.endswith(suf): return s[:-len(suf)] return s
(you need to check that suf
isn't empty, otherwise removing an empty suffix e.g. removesuffix("boat", "")
will do return s[:0]
and return ""
instead of "boat"
)
or use regex:
import re suffix = ".txt" s = re.sub(re.escape(suffix) + '$', '', s)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With