我需要拆分一個經常改變其值位置的網址。
例如:-這是具有三個不同位置的請求令牌的網址
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 來做這件事。
uj5u.com熱心網友回復:
您可以使用該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 的實際結構,并且不依賴于引數的位置或您必須在正則運算式中處理的其他特殊情況。
uj5u.com熱心網友回復:
假設您將 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))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/331167.html
上一篇:mapply輸出一列而不是串列
