查询字符串的 Python url 匹配

时间:2021-01-22 06:35:39

标签: python

我需要匹配以下两个相同的网址。唯一的区别是查询字符串参数的顺序。

domain.com/base-path/sub_path/aaa?**bb=cc&dd=ee**

domain.com/base-path/sub_path/aaa?**dd=ee&bb=cc**

Python 中是否有任何库可以做到这一点?如果不是,最好的方法是什么?

到目前为止,我认为拆分并存储在字典中并进行比较是最好的方法。

请指教。

3 个答案:

答案 0 :(得分:0)

使用 urllib.parse

>>> from urllib.parse import urlparse, parse_qs
>>> d1 = 'domain.com/base-path/sub_path/aaa?bb=cc&dd=ee'
>>> d2 = 'domain.com/base-path/sub_path/aaa?dd=ee&bb=cc'
>>> parse_qs(urlparse(d1).query) == parse_qs(urlparse(d2).query)
True

答案 1 :(得分:0)

使用 urllib.parse library

from urllib import parse


parsed = parse.urlsplit('domain.com/base-path/sub_path/aaa?bb=cc&dd=ee')
query_dict1 = parse.parse_qs(parsed.query)

parsed = parse.urlsplit('domain.com/base-path/sub_path/aaa?dd=ee&bb=cc')
query_dict2 = parse.parse_qs(p2.query)

print(query_dict1 == query_dict2)

答案 2 :(得分:-1)

您只需要对参数进行排序。实现这一目标的一种方法可能是

def get_params(url):
    return sorted(url.split("?")[-1])

get_params(url1) == get_params(url2)

True
相关问题