उपयोग करने के बाद cgi.parse_qs()
, परिणाम (शब्दकोश) को वापस क्वेरी स्ट्रिंग में कैसे परिवर्तित करें? कुछ इसी तरह की तलाश में urllib.urlencode()
।
उपयोग करने के बाद cgi.parse_qs()
, परिणाम (शब्दकोश) को वापस क्वेरी स्ट्रिंग में कैसे परिवर्तित करें? कुछ इसी तरह की तलाश में urllib.urlencode()
।
जवाबों:
urllib.parse.
urlencode
(क्वेरी, डोज़क = गलत, [...])मैपिंग ऑब्जेक्ट या टू-एलिमेंट टुपल्स का एक सिक्वेंस कन्वर्ट करें , जिसमें str या बाइट ऑब्जेक्ट्स हो सकते हैं, जो एक प्रतिशत एनकोडेड ASCII टेक्स्ट स्ट्रिंग के लिए है।
A dict
मानचित्रण है।
urllib.urlencode
(query
[,doseq
]]) एक मैपिंग ऑब्जेक्ट या दो-तत्व ट्यूपल्स के एक अनुक्रम को "प्रतिशत-एन्कोडेड" स्ट्रिंग में
परिवर्तित करें ... पात्रों द्वारा अलग किए गए जोड़े की एक श्रृंखला ...key=value
'&'
dict
लौटा है । इन स्ट्रेट को पास करने पर बहुत ही अजीब लगने वाले क्वेरी स्ट्रिंग्स होंगे। cgi.parse_qs()
list
अजगर 3 में, थोड़ा अलग:
from urllib.parse import urlencode
urlencode({'pram1': 'foo', 'param2': 'bar'})
उत्पादन: 'pram1=foo¶m2=bar'
python2 और python3 संगतता के लिए, यह आज़माएँ:
try:
#python2
from urllib import urlencode
except ImportError:
#python3
from urllib.parse import urlencode
तुम कुछ वैसा ही चाह रहे हो urllib.urlencode()
!
हालाँकि, जब आप कॉल करते हैं parse_qs()
(अलग से parse_qsl()
), तो शब्दकोश कुंजियाँ विशिष्ट क्वेरी चर नाम हैं और मान प्रत्येक नाम के लिए मानों की सूची है ।
इस जानकारी को पास करने के लिए urllib.urlencode()
, आपको इन सूचियों को "समतल" करना होगा। यहां बताया गया है कि आप इसे ट्यूपल्स की सूची समझ के साथ कैसे कर सकते हैं:
query_pairs = [(k,v) for k,vlist in d.iteritems() for v in vlist]
urllib.urlencode(query_pairs)
doseq=True
।
शायद आप कुछ इस तरह की तलाश कर रहे हैं:
def dictToQuery(d):
query = ''
for key in d.keys():
query += str(key) + '=' + str(d[key]) + "&"
return query
यह एक शब्दकोश लेता है और इसे urlencode की तरह क्वेरी स्ट्रिंग में परिवर्तित करता है। यह क्वेरी स्ट्रिंग के लिए एक अंतिम "और" जोड़ देगा, लेकिन return query[:-1]
इसे ठीक करता है, अगर यह एक समस्या है।
str.join()
अभी तक मिले हैं ? कैसे के बारे में urllib.quote_plus()
?
urlencode
में urllib.py
(यह अपने अजगर में से स्थापित करना चाहिए) क्यों बनाने क्वेरी स्ट्रिंग कभी कभी काफी सरल रूप में के रूप में अपने जवाब का अर्थ है (विशेष रूप से की जरूरत नहीं है को देखने के लिए करने के लिए 'बोली' कुछ अक्षर हैं जो एक में मान्य नहीं हैं यूआरएल)। @ इग्नासियो ने दो कार्यों को भी संदर्भित किया है जो आपके कार्यान्वयन को साफ करेंगे और इसे सही करेंगे।
from urllib.parse import urlencode; urlencode(your_dict)
) इससे छोटा और आसान है! मैं अनुदान देता हूँ कि यह कभी-कभी पहिया को सुदृढ़ करने के लिए भी स्मार्ट होता है, यहाँ तक कि जब यह मौजूदा, अच्छी तरह से डिज़ाइन किए गए पहियों तक पहुँचने के लिए महंगा या असुविधाजनक होता है, लेकिन यहाँ ऑफ-द-शेल्फ व्हील का उपयोग करना आसान है और अपने स्वयं के अवर को रोल करने की तुलना में तेज है ।
cgi.parse_qs()
पदावनत है। इसके बजाय urlparse.parse_qs () का उपयोग करें।