Reputation: 5105
i need to strip ../something/
from a url
eg. strip ../first/
from ../first/bit/of/the/url.html
where first
can be anything.
what's the best way to achieve this?
thanks :)
Upvotes: 0
Views: 282
Reputation: 94565
You can simply split the path twice at the official path separator (os.sep
, and not '/') and take the last bit:
>>> s = "../first/bit/of/the/path.html"
>>> s.split(os.sep, 2)[-1]
'bit/of/the/path.html'
This is also more efficient than splitting the path completely and stringing it back together.
Note that this code does not complain when the path contains fewer than 3+ path elements (for instance, 'file.html' yields 'file.html'). If you want the code to raise an exception if the path is not of the expected form, you can just ask for its third element (which is not present for paths that are too short):
>>> s.split(os.sep, 2)[2]
This can help detect some subtle errors.
Upvotes: 5
Reputation: 3897
EOL has given a nice and clean approach however I could not resist giving a regex alternative to it:)
>>> import re
>>> m=re.search('^(\.{2}\/\w+/)(.*)$','../first/bit/of/the/path.html')
>>> m.group(1)
'../first/'
Upvotes: 1