回答:
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
andを使用する必要があります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はクエリタイプであり、リクエストオブジェクトはクエリ引数を取得するための引数と呼ばれるメソッドをサポートしていることがわかりました。self.request.get('def')
オブジェクトから値を直接取得することもできます。
def getParams(url):
params = url.split("?")[1]
params = params.split('=')
pairs = zip(params[0::2], params[1::2])
answer = dict((k,v) for k,v in pairs)
お役に立てれば
urlparseモジュールはあなたが必要とするすべてを提供します:
urlparse.parse_qs()
import urllib.parse as urlparse