나는 이것이 OP가 요청한 것보다 조금 더 많다는 것을 알고 있지만 다음 URL에 조각을 가지고 있었고 간단한 방법을 찾고있었습니다.
>>> url = 'https://api.foo.com/orders/bartag?spamStatus=awaiting_spam&page=1&pageSize=250'
둘러보기 :
>>> split = urlparse.urlsplit(url)
>>> split
SplitResult(scheme='https', netloc='api.foo.com', path='/orders/bartag', query='spamStatus=awaiting_spam&page=1&pageSize=250', fragment='')
>>> type(split)
<class 'urlparse.SplitResult'>
>>> dir(split)
['__add__', '__class__', '__contains__', '__delattr__', '__dict__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__getstate__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__module__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__slots__', '__str__', '__subclasshook__', '__weakref__', '_asdict', '_fields', '_make', '_replace', 'count', 'fragment', 'geturl', 'hostname', 'index', 'netloc', 'password', 'path', 'port', 'query', 'scheme', 'username']
>>> split[0]
'https'
>>> split = (split[:])
>>> type(split)
<type 'tuple'>
따라서 다른 답변에서 이미 답변 된 경로 가입 외에도 내가 찾고있는 것을 얻기 위해 다음을 수행했습니다.
>>> split
('https', 'api.foo.com', '/orders/bartag', 'spamStatus=awaiting_spam&page=1&pageSize=250', '')
>>> unsplit = urlparse.urlunsplit(split)
>>> unsplit
'https://api.foo.com/orders/bartag?spamStatus=awaiting_spam&page=1&pageSize=250'
문서 에 따르면 정확히 5 부분 튜플이 필요합니다.
다음 튜플 형식을 사용합니다.
체계 0 URL 체계 지정자 빈 문자열
netloc 1 네트워크 위치 부분 빈 문자열
경로 2 계층 적 경로 빈 문자열
쿼리 3 쿼리 구성 요소 빈 문자열
조각 4 조각 식별자 빈 문자열
os.path.join작동 안 할 것이다. 그러나 단순히/문자로 결합하는 것은 모든 경우에 작동해야합니다/. 사양에 따라 HTTP의 표준 경로 구분 기호입니다.