首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配querystring的Python url

匹配querystring的Python url
EN

Stack Overflow用户
提问于 2021-01-22 14:35:40
回答 3查看 51关注 0票数 0

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

代码语言:javascript
复制
domain.com/base-path/sub_path/aaa?**bb=cc&dd=ee**

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

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

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

请给我建议。

EN

回答 3

Stack Overflow用户

发布于 2021-01-22 14:48:34

使用urllib.parse

代码语言:javascript
复制
>>> 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
票数 0
EN

Stack Overflow用户

发布于 2021-01-22 14:58:58

使用urllib.parse library

代码语言:javascript
复制
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)
票数 0
EN

Stack Overflow用户

发布于 2021-01-22 14:58:17

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

代码语言:javascript
复制
def get_params(url):
    return sorted(url.split("?")[-1])

get_params(url1) == get_params(url2)

True
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65840378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档