python - URL的字符串拆分总是改变它在python中的值的位置
问题描述
我需要拆分一个经常更改其值位置的 url。
例如:- 这是具有三个不同位置的请求令牌的 url
01:-https://127.0.0.1/?action=login&type=login&status=success&request_token=oCS44HJQT2ZSCGb39H76CjgXb0s2klwA
02:-https://127.0.0.1/?request_token=43CbEWSxdqztXNRpb2zmypCr081eF92d&action=login&type=login&status=success
03:-https://127.0.0.1/?&action=login&request_token=43CbEWSxdqztXNRpb2zmypCr081eF92d&type=login&status=success
从这些 url 中,我只需要在 '=' 之后带有一个字母数字编号的请求令牌的值,如 '43CbEWSxdqztXNRpb2zmypCr081eF92d'。
并拆分此网址,我正在使用此代码
request_token = driver.current_url.split('=')[1].split('&action')[0]
但是当 url 不在指定位置时它会给我错误。
所以任何人都可以给我一个解决方案来解决这个 url 在 python 中的单行拆分问题,这对我的堆栈成员来说是一个很大的祝福。
注意:-我在这里使用
driver.current_url
是因为我正在使用 selenium 来做这件事。
解决方案
您可以使用该urllib.parse
模块正确解析 URL。
>>> from urllib.parse import urlparse, parse_qs
>>> url = "?request_token=43CbEWSxdqztXNRpb2zmypCr081eF92d&action=login&type=login&status=success"
>>> query = parse_qs(urlparse(url).query)
>>> query['request_token']
['43CbEWSxdqztXNRpb2zmypCr081eF92d']
>>> query['request_token'][0]
'43CbEWSxdqztXNRpb2zmypCr081eF92d'
这会处理 URL 的实际结构,并且不依赖于参数的位置或您必须在正则表达式中处理的其他特殊情况。
推荐阅读
- rust - 如何为 Rust 设置 makeprg?
- azure - 在 Azure 应用服务上运行的 ASP.NET Core 3.1 应用针对 1.6 MB json 有效负载引发 EPIPE 错误
- c++ - 定义非常量内联静态成员对编译有什么影响?
- c# - 使用 Response.AddHeader("content-disposition", attachment) 时如何防止跨站点脚本漏洞?
- typescript - 打字稿说属性推送不适用于“位置 [] | Thenable
" - .net-core - 如何使用私人密钥和 rsasha256 算法 (.net) 创建 jwt 签名?
- mysql - 如何在 SQL 模式中正确设计 2 个表?
- python - 如何生成点分隔字符串的子字符串?
- javascript - 使用 vanilla Javascript 构建购物车功能
- intellij-idea - 如何在 Intellij 中重置“如果由 Y 注释,则抑制 X 警告”?