URL 的字符串拆分总是改变它在 python 中的值的位置
String Splitting of an URL which always changes the position of it's values in 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'。
为了拆分这个 url 我正在使用这个代码
request_token = driver.current_url.split('=')[1].split('&action')[0]
但是当 url 不在指定位置时它会给我错误。
那么谁能给我一个解决这个 url 在 python 中只拆分成一行的解决方案,这将是我的堆栈成员对我的极大祝福。
Note:- Here i'm using driver.current_url
because i'm working in selenium to do the thing.
您可以使用 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 的实际结构,不依赖于参数的位置或您必须在正则表达式中处理的其他特殊情况。
假设您将 URL 作为字符串,那么您可以使用正则表达式来隔离请求令牌。
import re
urls = ['https://127.0.0.1/?action=login&type=login&status=success&request_token=oCS44HJQT2ZSCGb39H76CjgXb0s2klwA',
'https://127.0.0.1/?request_token=43CbEWSxdqztXNRpb2zmypCr081eF92d&action=login&type=login&status=success',
'https://127.0.0.1/?&action=login&request_token=43CbEWSxdqztXNRpb2zmypCr081eF92d&type=login&status=success']
for url in urls:
m = re.match('.*request_token=(.*?)(?:&|$)', url)
if m:
print(m.group(1))
我需要拆分一个经常改变其值位置的 url。
例如:- 这是请求令牌
三个不同位置的url01:-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'。
为了拆分这个 url 我正在使用这个代码
request_token = driver.current_url.split('=')[1].split('&action')[0]
但是当 url 不在指定位置时它会给我错误。
那么谁能给我一个解决这个 url 在 python 中只拆分成一行的解决方案,这将是我的堆栈成员对我的极大祝福。
Note:- Here i'm using
driver.current_url
because i'm working in selenium to do the thing.
您可以使用 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 的实际结构,不依赖于参数的位置或您必须在正则表达式中处理的其他特殊情况。
假设您将 URL 作为字符串,那么您可以使用正则表达式来隔离请求令牌。
import re
urls = ['https://127.0.0.1/?action=login&type=login&status=success&request_token=oCS44HJQT2ZSCGb39H76CjgXb0s2klwA',
'https://127.0.0.1/?request_token=43CbEWSxdqztXNRpb2zmypCr081eF92d&action=login&type=login&status=success',
'https://127.0.0.1/?&action=login&request_token=43CbEWSxdqztXNRpb2zmypCr081eF92d&type=login&status=success']
for url in urls:
m = re.match('.*request_token=(.*?)(?:&|$)', url)
if m:
print(m.group(1))