मुझे पता है कि यह ओपी द्वारा पूछे जाने की तुलना में थोड़ा अधिक है, हालांकि मेरे पास निम्नलिखित यूआरएल के टुकड़े थे, और उन्हें शामिल करने के लिए एक सरल तरीका ढूंढ रहा था:
>>> 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 में मानक पथ विभाजक है।