2011-11-22 3 views
55

내가 한 두 개의 URL :절대 및 상대 URL을 결합하는 방법은 무엇입니까?

내가 URL2의 절대 URL을 얻을 수있는 방법
url1 = "http://127.0.0.1/test1/test2/test3/test5.xml" 
url2 = "../../test4/test6.xml" 

?

+0

가능한 중복 (http://stackoverflow.com/questions/1793261/how-to-join-components-of-a [파이썬에 URL을 구축하는 경로의 구성 요소를 결합하는 방법] -path-you-you-are-python을 생성하는 URL) –

+0

관련 항목 : [URL 경로 구성 요소를 지능적으로 결합] (http://codereview.stackexchange.com/questions/13027/joining-url-path- components- 지능적으로) – kojiro

답변

120

당신은 urlparse.urljoin를 사용해야합니다

>>> import urlparse 
>>> urlparse.urljoin(url1, url2) 
'http://127.0.0.1/test1/test4/test6.xml' 

를 파이썬 3 (urlparse is renamed to urllib.parse) 당신이 할 수 use it as follow으로 :

>>> import urllib.parse 
>>> urllib.parse.urljoin(url1, url2) 
'http://127.0.0.1/test1/test4/test6.xml' 
+0

3 또는 모드 매개 변수와 함께 'urljoin'을 사용하는 방법 또는 어떤 라이브러리를 권장합니까? –

+0

@mesuutt 루프를 만들고 각 부분을 이전에 조인 한 URL과 조인 해보십시오. –

+1

@ CédricJulien : 선행'/'이있는 경로가 "재설정"되고 반환 구성표가 + netloc + lasturl 인 간단한 루프가 작동하지 않습니다. urlparse.urljoin ('http://www.a.com/b/ c/d ','/ e ') =>'http : // www.a.com/e ' – MestreLion

4
>>> from urlparse import urljoin 
>>> url1 = "http://www.youtube.com/user/khanacademy" 
>>> url2 = "/user/khanacademy" 
>>> urljoin(url1, url2) 
'http://www.youtube.com/user/khanacademy' 

간단한.

7
es = ['http://127.0.0.1', 'test1', 'test4', 'test6.xml'] 
base = '' 
map(lambda e: urlparse.urljoin(base, e), es) 
관련 문제