首页 > 解决方案 > 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 来做这件事。

标签: pythonpandasdataframenumpycode-splitting

解决方案


您可以使用该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 的实际结构,并且不依赖于参数的位置或您必须在正则表达式中处理的其他特殊情况。


推荐阅读