Answers:
Python 2:
import urlparse
url = 'http://foo.appspot.com/abc?def=ghi'
parsed = urlparse.urlparse(url)
print urlparse.parse_qs(parsed.query)['def']
Python 3:
import urllib.parse as urlparse
from urllib.parse import parse_qs
url = 'http://foo.appspot.com/abc?def=ghi'
parsed = urlparse.urlparse(url)
print(parse_qs(parsed.query)['def'])
parse_qs
返回值列表,因此上述代码将打印['ghi']
。
parse_qs
将返回一个列表对象。如果需要字符串,则需要获取它的第一个元素urlparse.parse_qs(parsed.query)['def'][0]
urlparse(url, allow_fragments=False)
,否则查询将返回空str。
from urllib.parse import urlparse, parse_qs
和parse_qs(parsed.query)
urlparse.urlparse(url)
->urlparse(url)
我很震惊这个解决方案还没有在这里。用:
request.GET.get('variable_name')
这将从“ GET”字典中“获取”变量,并返回“ variable_name”值(如果存在),或者返回None对象(如果不存在)。
self
,但我同意以上评论。
对于Python> 3.4
from urllib import parse
url = 'http://foo.appspot.com/abc?def=ghi'
query_def=parse.parse_qs(parse.urlparse(url).query)['def'][0]
有一个名为furl的新库。我发现这个库是执行url代数的最pythonic。安装:
pip install furl
码:
from furl import furl
f = furl("/abc?def='ghi'")
print f.args['def']
我知道这有点晚了,但是自从我今天在这里找到自己以来,我认为这对其他人可能是一个有用的答案。
import urlparse
url = 'http://example.com/?q=abc&p=123'
parsed = urlparse.urlparse(url)
params = urlparse.parse_qsl(parsed.query)
for x,y in params:
print "Parameter = "+x,"Value = "+y
使用parse_qsl(),“将数据作为名称,值对的列表返回。”
您引用的url是一种查询类型,我看到请求对象支持一种称为arguments的方法来获取查询参数。您可能还希望self.request.get('def')
直接尝试从对象中获取价值。
参数= dict([part.split('=')代表get_parsed_url [4] .split('&')]的部分)
这很简单。可变参数将包含所有参数的字典。
import urllib.parse as urlparse