Michael Maibaum wrote:

> On 25 Feb 2005, at 14:09, Harper, Gina wrote:
> 
>> I would start with something like this:
>> somestring = '/foo/bar/beer/sex/cigarettes/drugs/alcohol/'
>> somelist = somestring.split('/')
>> print somelist
> 
> However - this will not work on Windows. It'd work on all the OS I 
> usually use though ;)
> 

This should work reasonably reliably on Windows and Unix:

>>> somestring = '/foo/bar/beer/sex/cigarettes/drugs/alcohol/'
>>> os.path.normpath(somestring).split(os.path.sep)
['', 'foo', 'bar', 'beer', 'sex', 'cigarettes', 'drugs', 'alcohol']

However a better solution is probably to call os.path.split repeatedly 
until it won't split anything more:

>>> somestring = r'C:\foo\bar\beer'
>>> def splitpath(p):
        res = []
        while 1:
                p, file = os.path.split(p)
                if not file:
                        break
                res.append(file)
        res.append(p)
        res.reverse()
        return res

>>> splitpath(somestring)
['C:\\', 'foo', 'bar', 'beer']
>>> splitpath('foo/bar')
['', 'foo', 'bar']

The first component is an empty string for relative paths, a drive letter 
or \ for absolute Windows paths, \\ for UNC paths, / for unix absolute 
paths.
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to