उपयोग urllib.quote
या urllib.quote_plus
urllib documentation से:
बोली (स्ट्रिंग [, सुरक्षित])
विशेष वर्ण बदलें स्ट्रिंग "% xx" से बचने में। पत्र, अंक, और वर्ण "_.-" कभी उद्धृत नहीं हैं। वैकल्पिक सुरक्षित पैरामीटर अतिरिक्त वर्ण निर्दिष्ट करता है जिन्हें उद्धृत नहीं किया जाना चाहिए - इसका डिफ़ॉल्ट मान '/' है।
उदाहरण: quote('/~connolly/')
'/%7econnolly/'
पैदा करता है।
quote_plus (स्ट्रिंग [, सुरक्षित])
बोली (जैसा), लेकिन यह भी रिक्त स्थान धन चिह्नों से, की जगह के रूप में HTML प्रपत्र मूल्यों के हवाले करने के लिए आवश्यक। मूल स्ट्रिंग में प्लस संकेत तब तक बच गए हैं जब तक उन्हें सुरक्षित में शामिल नहीं किया जाता है। यह में '/' के लिए सुरक्षित डिफ़ॉल्ट नहीं है।
संपादित करें: पूरे यूआरएल पर urllib.quote या urllib.quote_plus का उपयोग करते हुए यह वध करना होगा, @ ΤΖΩΤΖΙΟΥ बताते हैं:
>>> quoted_url = urllib.quote('http://www.example.com/foo goo/bar.html')
>>> quoted_url
'http%3A//www.example.com/foo%20goo/bar.html'
>>> urllib2.urlopen(quoted_url)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\python25\lib\urllib2.py", line 124, in urlopen
return _opener.open(url, data)
File "c:\python25\lib\urllib2.py", line 373, in open
protocol = req.get_type()
File "c:\python25\lib\urllib2.py", line 244, in get_type
raise ValueError, "unknown url type: %s" % self.__original
ValueError: unknown url type: http%3A//www.example.com/foo%20goo/bar.html
@ ΤΖΩΤΖΙΟΥ एक समारोह urlparse.urlparse and urlparse.urlunparse का उपयोग करता है यूआरएल पार्स करने के लिए प्रदान करता है और केवल पथ को एन्कोड करें। यह आपके लिए अधिक उपयोगी हो सकता है, यद्यपि यदि आप एक ज्ञात प्रोटोकॉल और होस्ट से यूआरएल बना रहे हैं लेकिन एक संदिग्ध पथ के साथ, आप शायद यूआरएलपीएस से बचने के लिए भी कर सकते हैं और यूआरएल के संदिग्ध हिस्से को उद्धृत कर सकते हैं, ज्ञात सुरक्षित भागों।
एक और अधिक अप-टू-डेट जवाब नहीं है यहां StackOverflow पर: http://stackoverflow.com/questions/10584861/canonize-normali ze-an-url-in-python/15629657 – stuckintheshuck
मुझे नहीं लगता कि यह बेहतर है ... –