Как присоединиться к абсолютным и относительным URL-адресам? У меня есть два URL: url1 = "http://127.0.0.1/test1/test2/test3/test5.xml" url2 = "../../test4/test6.xml" Как я могу получить абсолютный url для url2? Ответ 1 Вы должны использовать urlparse.urljoin: >>> import urlparse >>> urlparse.urljoin(url1, url2) 'http://127.0.0.1/test1/test4/test6.xml' С Python 3 (где urlparse переименовывается в urllib.parse) вы можете используйте его следующим образом: >>> import urllib.parse >>> urllib.parse.urljoin(url1, url2) 'http://127.0.0.1/test1/test4/test6.xml' Ответ 2 es = ['http://127.0.0.1', 'test1', 'test4', 'test6.xml'] base = '' map(lambda e: urlparse.urljoin(base, e), es) Ответ 3 >>> from urlparse import urljoin >>> url1 = "http://www.youtube.com/user/khanacademy" >>> url2 = "/user/khanacademy" >>> urljoin(url1, url2) 'http://www.youtube.com/user/khanacademy' Simple. Ответ 4 Если ваш относительный путь состоит из нескольких частей, вы должны присоединиться к ним отдельно, так как urljoin заменит относительный путь, а не присоединит его. Самый простой способ сделать это - использовать posixpath. >>> import urllib.parse >>> import posixpath >>> url1 = "http://127.0.0.1" >>> url2 = "test1" >>> url3 = "test2" >>> url4 = "test3" >>> url5 = "test5.xml" >>> url_path = posixpath.join(url2, url3, url4, url5) >>> urllib.parse.urljoin(url1, url_path) 'http://127.0.0.1/test1/test2/test3/test5.xml' См. Также: Как объединить компоненты пути при создании URL-адреса в Python.
Ответ 1 Вы должны использовать urlparse.urljoin: >>> import urlparse >>> urlparse.urljoin(url1, url2) 'http://127.0.0.1/test1/test4/test6.xml' С Python 3 (где urlparse переименовывается в urllib.parse) вы можете используйте его следующим образом: >>> import urllib.parse >>> urllib.parse.urljoin(url1, url2) 'http://127.0.0.1/test1/test4/test6.xml'
Ответ 2 es = ['http://127.0.0.1', 'test1', 'test4', 'test6.xml'] base = '' map(lambda e: urlparse.urljoin(base, e), es)
Ответ 3 >>> from urlparse import urljoin >>> url1 = "http://www.youtube.com/user/khanacademy" >>> url2 = "/user/khanacademy" >>> urljoin(url1, url2) 'http://www.youtube.com/user/khanacademy' Simple.
Ответ 4 Если ваш относительный путь состоит из нескольких частей, вы должны присоединиться к ним отдельно, так как urljoin заменит относительный путь, а не присоединит его. Самый простой способ сделать это - использовать posixpath. >>> import urllib.parse >>> import posixpath >>> url1 = "http://127.0.0.1" >>> url2 = "test1" >>> url3 = "test2" >>> url4 = "test3" >>> url5 = "test5.xml" >>> url_path = posixpath.join(url2, url3, url4, url5) >>> urllib.parse.urljoin(url1, url_path) 'http://127.0.0.1/test1/test2/test3/test5.xml' См. Также: Как объединить компоненты пути при создании URL-адреса в Python.