string.rstrip
Peter Otten
__peter__ at web.de
Mon Sep 22 18:58:07 EDT 2003
Hank wrote:
> Hi,
>
> I have this problem with string.rstrip
>
> Python 2.2.3 (#42, May 30 2003, 18:12:08) [MSC 32 bit (Intel)] on
> win32
> Type "help", "copyright", "credits" or "license" for more information.
>>>> import string
>>>> mystr = "test.txt"
>>>> mystr = string.rstrip(mystr, ".txt")
>>>> print mystr
> tes
>
> The last 't' was stripped. Is this fixed or documented anywhere? it
> works for other cases, but this one seems to give me a weird result.
There are several issues with your code. The preferred way to invoke
rstrip() is now as a method, so
>>> mystr = "test.txt"
>>> mystr.rstrip(".txt")
'tes'
Why's that? Think of the argument of rstrip() as a character set rather than
a string; characters are removed from the end of mystr as long as they are
in [".", "t", "x"].
To remove an arbitrary suffix you can write your own function:
>>> def removeSuffix(s, suffix):
... if s.endswith(suffix):
... return s[:-len(suffix)]
... return s
...
>>> removeSuffix(mystr, ".txt")
'test'
However, I guess that what you really want is to remove the filename
extension:
>>> import os
>>> os.path.splitext(mystr)
('test', '.txt')
>>> os.path.splitext(mystr)[0]
'test'
This returns both parts of the string and thus gives you the chance to check
if the extension is really what you expected.
One caveat: only the last extension is cut off the filename.
>>> os.path.splitext("test.tar.gz")
('test.tar', '.gz')
Peter
More information about the Python-list
mailing list