2010-09-24 31 views
19

Tôi đang sử dụng số BaseHTTPRequestHandler của Python. Khi tôi thực hiện phương pháp do_GET tôi thấy mình phân tích cú pháp bằng tay self.pathCách phân tích BaseHTTPRequestHandler.path

self.path trông giống như sau:

/?parameter=value&other=some 

Làm thế nào tôi nên phân tích nó để có được một dict như

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

Cảm ơn,

+0

có thể trùng lặp của [chuỗi truy vấn phân tích cú pháp bằng urllib trong Python 2.4] (http://stackoverflow.com/questions/1769625/parse-query-string-with-urllib-in-python-2-4) – katrielalex

Trả lời

17

Sử dụng parse_qs từ các module urlparse, nhưng chắc chắn rằng bạn loại bỏ các "/?":

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

Lưu ý rằng mỗi tham số có thể có nhiều giá trị, vì vậy dict trở maps mỗi tên tham số vào một danh sách các giá trị .

23

Xét self.path có khả năng có thể là thứ bậc, có lẽ bạn nên làm điều gì đó như sau:

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

Trong trường hợp ai đó cần nó cho Python3:

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

urlparse được đổi tên thành urllib.parse trong Python3.

Các vấn đề liên quan