strip module bug

Tim Chase python.list at tim.thechases.com
Mon Oct 13 15:21:06 CEST 2008


> I'm using versions 2.5.2 and 2.5.1 of python and have encountered a 
> potential bug. Not sure if I'm misunderstanding the usage of the strip 
> function but here's my example.
> 
> var = "detail.xml"
> print var.strip(".xml")   ### expect to see 'detail', but get 'detai'
> var = "overview.xml"
> print var.strip(".xml") ### expect and get 'overview'

.strip() takes a *set* of characters to remove, as many as are found:
       _______    _____
  >>> 'xqxqxqxyxxyxqxqx'.strip('xq')
  'yxxy'

Using .replace() may work, but might have some odd side effects:

  >>> 'something.xml.zip'.replace('.xml')
  'something.zip'
  >>> 'this file has .xml in its name.xml'.replace('.xml')
  'this file has  in its name'

This also has problems if your filename and extension differ in 
case (removing ".xml" from "file.XML")

If you want to remove the extension, then I recommend using the 
python builtin:

   >>> import os
   >>> results = os.path.splitext('this has .xml in its name.xml')
   >>> results
   ('this has .xml in its name', '.xml')
   >>> fname, ext = results

Or, if you know what the extension is:

   >>> fname = 'this file has .xml in its name.xml'
   >>> ext = '.xml'
   >>> fname[:-len(ext)]
   'this file has .xml in its name'

Just a few ideas that are hopefully more robust.

-tkc







More information about the Python-list mailing list