【问题标题】:How to make list from get response [duplicate]如何从获取响应中制作列表[重复]
【发布时间】:2013-07-29 15:48:01
【问题描述】:

如何从 URL 中获取 URL 参数列表? 例如:http://example.com/blank.html?access_token=blablabla&expires_in=0&user_id=ablabl&secret=rararar

我需要得到access_tokenexpires_inuser_idsecret

【问题讨论】:

    标签: python url get


    【解决方案1】:

    使用urlparse.parse_qs()urlparse.parse_qsl()解析查询字符串:

    from urlparse import parse_qs, parse_qsl, urlparse
    
    query_string = urlparse(url).query
    if query_string:
        data_as_dict = parse_qs(query_string)  # returns a dictionary with lists
        data_as_list = parse_qsl(query_string) # returns a list of tuples
    

    演示:

    >>> from urlparse import parse_qs, parse_qsl
    >>> url = 'http://example.com/blank.html?access_token=blablabla&expires_in=0&user_id=ablabl&secret=rararar'
    >>> query_string = url.partition('?')[2]
    >>> parse_qs(query_string)
    {'access_token': ['blablabla'], 'user_id': ['ablabl'], 'secret': ['rararar'], 'expires_in': ['0']}
    >>> parse_qsl(query_string)
    [('access_token', 'blablabla'), ('expires_in', '0'), ('user_id', 'ablabl'), ('secret', 'rararar')]
    

    由于查询字符串中的任何键都可能出现多次,因此每个键最终可能有多个值。 parse_qs() 函数将所有值收集到每个键的列表中,parse_qsl() 函数只是将每个键值对作为元组返回,让您决定如何处理重复项。

    【讨论】:

    • 如果你使用urlparse,使用urlparse.urlparseurlparse.urlsplit而不是str.partition不是更好吗?
    • @Robᵩ:根据我的经验,这有点矫枉过正。我发现str.partition() 仅此而已.. 很方便。
    • 但是您的示例对# 的处理效果不佳,如http://example.com/?q1=a1&q2=a2#label
    • @Robᵩ:Touché,这不使用分区的好理由。会更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 2018-03-29
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    相关资源
    最近更新 更多