Tôi biết điều này nhiều hơn một chút so với OP yêu cầu, Tuy nhiên, tôi đã có các phần của url sau và đang tìm kiếm một cách đơn giản để kết hợp chúng:
>>> url = 'https://api.foo.com/orders/bartag?spamStatus=awaiting_spam&page=1&pageSize=250'
Làm một số quan sát xung quanh:
>>> 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'>
Vì vậy, ngoài việc tham gia đường dẫn đã được trả lời trong các câu trả lời khác, Để có được những gì tôi đang tìm kiếm, tôi đã làm như sau:
>>> 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'
Theo tài liệu, nó cần CHÍNH XÁC một bộ 5 phần.
Với định dạng tuple sau:
lược đồ 0 công cụ chỉ định lược đồ URL chuỗi trống
netloc 1 Chuỗi trống phần vị trí mạng
đường dẫn 2 Đường dẫn phân cấp chuỗi trống
truy vấn 3 Thành phần truy vấn chuỗi trống
phân mảnh 4 Chuỗi trống định danh phân mảnh
os.path.join
sẽ không làm việc. Nhưng chỉ cần kết hợp bằng/
ký tự sẽ hoạt động trong mọi trường hợp -/
là dấu phân cách đường dẫn tiêu chuẩn trong HTTP theo đặc điểm kỹ thuật.