2010-09-24 17 views
19

मैं पाइथन के BaseHTTPRequestHandler का उपयोग कर रहा हूं। जब मैं do_GET तरीका लागू मैं अपने आप को हाथ self.pathBaseHTTPRequestHandler.path का विश्लेषण कैसे करें

द्वारा पार्स करने लगता है self.path लगता है कि कुछ:

/?parameter=value&other=some 

मैं इसे कैसे पार्स चाहिए क्रम में की तरह

{'parameter': 'value', 'other':'some'} 

धन्यवाद एक dict प्राप्त करने के लिए,

+0

पाइथन 2.4 में urllib के साथ [पार्स क्वेरी स्ट्रिंग का संभावित डुप्लिकेट] (http://stackoverflow.com/questions/1769625/parse-query-string-with-urllib-in-python-2-4) – katrielalex

उत्तर

17

urlparse मॉड्यूल से उपयोग parse_qs, लेकिन आप अवश्य निकाल दें "/?":

from urlparse import parse_qs 
s = "/?parameter=value&other=some" 
print parse_qs(s[2:]) # prints {'other': ['some'], 'parameter': ['value']} 

नोट प्रत्येक पैरामीटर अधिक मान सकते हैं कि, इसलिए लौटे dict मानों की सूची के लिए प्रत्येक पैरामीटर नाम नक्शे ।

23

को ध्यान में रखते self.path संभावित श्रेणीबद्ध किया जा सकता है, तो आप शायद निम्नलिखित की तरह कुछ करना चाहिए:

import urlparse 
o = urlparse.urlparse(self.path) 
urlparse.parse_qs(o.query) 
4

मामले किसी में python3 के लिए इसकी आवश्यकता है:

import urllib 
s = "/?parameter=value&other=some" 
print(urllib.parse.parse_qs(s[2:])) 
>>> {'other': ['some'], 'parameter': ['value']} 

urlparse में urllib.parse को नाम दिया गया था python3।

संबंधित मुद्दे