절대 URL과 상대 URL에 가입하는 방법은 무엇입니까?
URL이 두 개 있습니다.
url1 = "http://127.0.0.1/test1/test2/test3/test5.xml"
url2 = "../../test4/test6.xml"
url2에 대한 절대 URL은 어떻게 얻을 수 있습니까?
urlparse.urljoin을 사용해야 합니다.
>>> import urlparse
>>> urlparse.urljoin(url1, url2)
'http://127.0.0.1/test1/test4/test6.xml'
Python 3(urlparse의 이름이 turllib.parse로 변경됨)에서는 다음과 같이 사용할 수 있습니다.
>>> import urllib.parse
>>> urllib.parse.urljoin(url1, url2)
'http://127.0.0.1/test1/test4/test6.xml'
상대 경로가 여러 부분으로 구성되어 있는 경우에는 다음과 같이 별도로 결합해야 합니다.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'
참고 항목:Python에서 URL을 구성할 때 경로의 구성 요소를 결합하는 방법
사용할 수 있습니다.reduce
더 깨끗한 방식으로 Shikhar의 방법을 달성하기 위해.
>>> import urllib.parse
>>> from functools import reduce
>>> reduce(urllib.parse.urljoin, ["http://moc.com/", "path1/", "path2/", "path3/"])
'http://moc.com/path1/path2/path3/'
이 방법을 사용할 경우 각 조각에는 결합 중인 경로 조각임을 나타내기 위해 선행 슬래시가 없는 후행 슬래시가 있어야 합니다.
이것이 더 정확하고 유익하며, 당신에게 다음을 것입니다.path1/
URI 경로 조각이며 전체 경로가 아닙니다(예:/path1/
) 또는 알 수 없음(예:path1
알 수 없는 경로도 가능하지만 전체 경로로 처리됩니다.
추가해야 하는 경우/
그것이 부족한 조각으로, 당신은 다음을 할 수 있습니다.
uri = uri if uri.endswith("/") else f"{uri}/"
URI 결의안에 대해 더 배우기 위해, 위키피디아는 몇 가지 좋은 예를 가지고 있습니다.
업데이트
방금 피터 페론이 Shikhar의 답변을 축소하는 것에 대해 언급한 것을 알았지만, 어떻게 하는지 보여주기 위해 여기에 이것을 남겨두겠습니다.
업데이트된 위키백과 URL
es = ['http://127.0.0.1', 'test1', 'test4', 'test6.xml']
base = ''
map(lambda e: urlparse.urljoin(base, e), es)
python 3.0+의 경우 URL에 가입하는 올바른 방법은 다음과 같습니다.
from urllib.parse import urljoin
urljoin('https://10.66.0.200/', '/api/org')
# output : 'https://10.66.0.200/api/org'
>>> from urlparse import urljoin
>>> url1 = "http://www.youtube.com/user/khanacademy"
>>> url2 = "/user/khanacademy"
>>> urljoin(url1, url2)
'http://www.youtube.com/user/khanacademy'
간단하죠.
언급URL : https://stackoverflow.com/questions/8223939/how-to-join-absolute-and-relative-urls
'programing' 카테고리의 다른 글
신뢰할 수 있는 방식으로 오라클 BLOB를 작성/업데이트하는 방법은 무엇입니까? (0) | 2023.06.21 |
---|---|
ASP.NET 사용자 정의 404를 찾을 수 없음 404 대신 200 OK 반환 (0) | 2023.06.21 |
C#.NET 응용 프로그램에서 SQL Server 시간 데이터 유형을 사용하시겠습니까? (0) | 2023.06.21 |
Mac에서 MongoDB 나침반 실행 (0) | 2023.06.21 |
Git index.lock File은 커밋하려고 할 때 존재하지만 파일을 삭제할 수 없습니다. (0) | 2023.06.21 |