दिलचस्प पोस्ट
रूबी के पास निजी और सुरक्षित तरीके क्यों हैं? जांचें कि क्या $ _POST-value खाली है सी को एक निष्पादन योग्य बाइनरी फ़ाइल में कैसे संकलित करें और एंड्रॉइड शेल से Android में चलाएं? सेग्यू के माध्यम से डेटा पास करें एक स्ट्रेट में अनसाइज्ड सरणी घोषणा आप एक अच्छा अपवित्रीकरण फ़िल्टर कैसे लागू करते हैं? जावास्क्रिप्ट में फ्लैट सरणी से पेड़ सरणी बनाएं नया एंड्रॉइड 4.0 आइस क्रीम सैंडविच एपीआई का उपयोग करके एंड्रॉइड कैलेंडर इवेंट कैसे पढ़ और संपादित करें? जावा त्रुटि: "आपकी सुरक्षा सेटिंग्स ने स्थानीय अनुप्रयोग को चलाने से रोक दिया है" मैं जावा में सिस्टम टाइम कैसे सेट कर सकता हूं? एजेक्स अनुरोध के लिए jQuery "पार्सररर" लौट रहा है कैसे आईआईएस पर मर्क्यूरिअल और एचजीईएबीडर सेटअप करें? त्रुटि: Google मैप्स एपीआई त्रुटि: मिसिंगकेमेमैपरएर्रर जावा में कचरा कलेक्टर – एक ऑब्जेक्ट नल सेट करें एंड्रॉइड नंबर पिकर संवाद

कैसे पायथन में यूआरएल पैरामीटर में सांकेतिक शब्दों में बदलना है?

यदि मैं करता हूँ

url = "http://example.com?p=" + urllib.quote(query) 
  1. यह एन्कोड / %2F करने के लिए नहीं है (OAuth सामान्यीकरण टूटता है)
  2. यह यूनिकोड को संभाल नहीं करता है (यह एक अपवाद फेंकता है)

क्या कोई बेहतर लाइब्रेरी है?

वेब के समाधान से एकत्रित समाधान "कैसे पायथन में यूआरएल पैरामीटर में सांकेतिक शब्दों में बदलना है?"

डॉक्स से :

 urllib.quote(string[, safe]) 

% Xx escape का उपयोग करके स्ट्रिंग में विशेष वर्ण बदलें अक्षरों, अंक, और वर्ण '_.-' उद्धृत नहीं किए गए हैं डिफ़ॉल्ट रूप से, यह फ़ंक्शन यूआरएल के पथ खंड को उद्धृत करने के लिए अभिप्रेत है। वैकल्पिक सुरक्षित पैरामीटर अतिरिक्त वर्णों को निर्दिष्ट करता है जिन्हें उद्धृत नहीं किया जाना चाहिए – इसका डिफ़ॉल्ट मान '/' है

इसका अर्थ है कि सुरक्षा के लिए '' पासिंग '' का आपका पहला मुद्दा हल होगा:

 >>> urllib.quote('/test') '/test' >>> urllib.quote('/test', safe='') '%2Ftest' 

दूसरे मुद्दे के बारे में, इसके बारे में यहां एक बग रिपोर्ट है जाहिरा तौर पर यह अजगर 3 में तय हो गया था। आप इसे यूटीएफ 8 के रूप में एन्कोडिंग द्वारा इसका समाधान कर सकते हैं:

 >>> query = urllib.quote(u"Müller".encode('utf8')) >>> print urllib.unquote(query).decode('utf8') Müller 

जिस तरह से urlencode पर एक नज़र है

ध्यान दें कि urllib.quote urllib.parse.quote में पायथन urllib.parse.quote में स्थानांतरित कर urllib.parse.quote गया है

पायथन 3 में, urllib.quote को urllib.quote में स्थानांतरित कर दिया गया है और यह डिफ़ॉल्ट रूप से यूनिकोड को संभालता है।

 >>> from urllib.parse import quote >>> quote('/test') '/test' >>> quote('/test', safe='') '%2Ftest' >>> quote('/El Niño/') '/El%20Ni%C3%B1o/' 

मेरा जवाब पाओलो के उत्तर के समान है।

मुझे लगता है कि मॉड्यूल requests बहुत बेहतर हैं यह urllib3 पर आधारित है आप यह कोशिश कर सकते हैं:

 >>> from requests.utils import quote >>> quote('/test') '/test' >>> quote('/test', safe='') '%2Ftest' 

यदि आप डीजेंगो का उपयोग कर रहे हैं, तो आप urlquote का उपयोग कर सकते हैं:

 >>> from django.utils.http import urlquote >>> urlquote(u"Müller") u'M%C3%BCller'