我正在研究一个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
对象中提取密钥名称
非常感谢, 阿尔瓦罗
答案 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
。