如何使用python从URL检索键值对

时间:2017-05-23 15:44:52

标签: python python-2.7 url

我正在研究一个python 2.7脚本,以便给定一个具有一定数量的键值对的URL(不是它们的固定数量),在json结构上检索这个值。

这是我到目前为止所做的:

from furl import furl

url = "https://search/address?size=10&city=Madrid&offer_type=1&query=Gran%20v"

f = furl(url) 
fields = ['size', 'city', 'offer_type', 'query']

l = []
l.append(f.args['size'])
l.append(f.args['city'])
l.append(f.args['offer_type'])
l.append(f.args['query'])

body = {
        fields[0]: f.args[fields[0]],
        fields[1]: f.args[fields[1]],
        fields[2]: f.args[fields[2]],
        fields[3]: f.args[fields[3]]
    }

此代码有效,但仅适用于我知道将有4个键值对以及这些对的名称的情况。如果我的网址更短或更大,我不知道如何面对这个问题。

使用此命令length = len(f.args)我可以获取对的数量,但不知道如何从f.args对象中提取密钥名称

非常感谢, 阿尔瓦罗

3 个答案:

答案 0 :(得分:4)

我有点困惑...... f.args已经是你想要的类型的字典对象了。如果要将其显式转换为字典,可以使用:

body = dict(f.args)

但即使这样也没必要。如果您想要对象的新副本以便在不影响原始实例的情况下进行更改,则可以调用.copy()方法。

答案 1 :(得分:2)

这就是你要找的东西吗?

from furl import furl

url = "https://search/address?size=10&city=Madrid&offer_type=1&query=Gran%20v"

f = furl(url) 

print zip(f.args.keys(),f.args.values())

输出:

[('size', '10'), ('city', 'Madrid'), ('offer_type', '1'), ('query', 'Gran v')]

答案 2 :(得分:1)

furl库没有特别详细记录,但挖掘源代码表明f.args是一个最终重定向到orderedmultidict.omdict对象的属性。这支持所有标准字典方法,以及更多有趣的东西(也没有详细记录)。

因此,您可以在f.args body使用f.args.copy()。如果由于某种原因需要副本,请执行dict(f.args)class CustomerService def is_in_debit?(user) // your http request here end end