【问题标题】:How to retrieve key value pairs from URL using python如何使用python从URL中检索键值对
【发布时间】:2017-10-23 16:21:40
【问题描述】:

我正在编写一个 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对象中提取键名

非常感谢, 阿尔瓦罗

【问题讨论】:

  • list(f.args)f.args.keys()?通常,当您在其上调用 list() 时,类似 dict 的对象会返回其键。

标签: python python-2.7 url


【解决方案1】:

furl 库的文档并没有特别完善,但深入研究源代码表明 f.args 是一个最终重定向到 orderedmultidict.omdict 对象的属性。这支持所有标准字典方法,以及更多有趣的东西(也没有很好的文档记录)。

因此,您可以在需要body 的任何地方使用f.args。如果您出于某种原因需要一份副本,请使用f.args.copy(),或者可能是dict(f.args)

【讨论】:

    【解决方案2】:

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

    body = dict(f.args)
    

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

    【讨论】:

    • 您最需要的是f.args.copy()。很好看。
    【解决方案3】:

    这是你要找的吗?

    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')]

    【讨论】:

    • OP 特别想要一个字典。
    • Welp,我猜不是,有一个 +1
    猜你喜欢
    • 2014-05-26
    • 2022-01-06
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 2019-10-24
    相关资源
    最近更新 更多