pythonstringpathprefix

How to remove a path prefix in python?


I wanted to know what is the pythonic function for this :

I want to remove everything before the wa path.

p = path.split('/')
counter = 0
while True:
    if p[counter] == 'wa':
        break
    counter += 1
path = '/'+'/'.join(p[counter:])

For instance, I want '/book/html/wa/foo/bar/' to become '/wa/foo/bar/'.


Solution

  • A better answer would be to use os.path.relpath:

    http://docs.python.org/3/library/os.path.html#os.path.relpath

    >>> import os
    >>> full_path = '/book/html/wa/foo/bar/'
    >>> relative_path = '/book/html'
    >>> print(os.path.relpath(full_path, relative_path))
    'wa/foo/bar'