как обрабатывать '../' в Python? - PullRequest
0 голосов
/ 13 ноября 2010

мне нужно убрать ../something/ с URL

например.полоса ../first/ от ../first/bit/of/the/url.html где first может быть чем угодно.

каков наилучший способ добиться этого?

спасибо:)

Ответы [ 2 ]

5 голосов
/ 13 ноября 2010

Вы можете просто разделить путь дважды в официальном разделителе пути (os.sep, а не '/') и взять последний бит:

>>> s = "../first/bit/of/the/path.html"
>>> s.split(os.sep, 2)[-1]
'bit/of/the/path.html'

Это также более эффективно, чем полное разбиение пути и соединение его вместе.

Обратите внимание, что этот код не жалуется, когда путь содержит менее 3+ элементов пути (например, 'file.html' yields 'file.html'). Если вы хотите, чтобы код вызывал исключение, если путь не имеет ожидаемой формы, вы можете просто запросить его третий элемент (который отсутствует для путей, которые слишком коротки):

>>> s.split(os.sep, 2)[2]

Это может помочь обнаружить некоторые тонкие ошибки.

1 голос
/ 13 ноября 2010

EOL дал хороший и чистый подход, но я не удержался и дал ему альтернативу регулярному выражению :) 1001

>>> import re
>>> m=re.search('^(\.{2}\/\w+/)(.*)$','../first/bit/of/the/path.html')
>>> m.group(1)
'../first/'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...