我需要匹配下面两个相同的url。唯一的区别是查询字符串参数的顺序。
domain.com/base-path/sub_path/aaa?**bb=cc&dd=ee**
domain.com/base-path/sub_path/aaa?**dd=ee&bb=cc**
是否有任何Python库可以做到这一点?如果没有,最好的方法是什么?
到目前为止,我认为分割并存储在字典中并进行比较将是最好的方法。
请建议。
使用urllib.parse
库
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)
使用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
您只需要对参数进行排序。一种方法可以是
def get_params(url):
return sorted(url.split("?")[-1])
get_params(url1) == get_params(url2)
True