Search code examples
pythonstringstrip

python: rstrip one exact string, respecting order


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?


Solution

  • 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')