Примеры возможных входных данных:
'Starts in 09h 52m 56s'
'Ends in 00h 33m 13s'
Выходные данные для каждого из двух указанных выше входных данных будут следующими:
['Starts', '09', '52', '56']
['Ends', '00', '33', '13']
Справа внизу приведена схема такого рода работ:
(Starts|Ends) in ([0-9]{2})h ([0-9]{2})m ([0-9]{2})s
К сожалению, он выводит все примерно так:
[('Ends', '00', '46', '34')]
Вместо:
['Ends', '00', '46', '34']
Более важно, однако, я хотел бы сделать регулярное выражение более краткимвместо того, чтобы повторять ([0-9]{2})
три раза.
Я попытался использовать (Starts|Ends)|([0-9]{2})[h|m|s]
, но это выдает следующее:
[('Ends', ''), ('', '04'), ('', '20'), ('', '41')]
Опять вывод, который я ищудля это просто:
['Ends', '00', '33', '13']
Как было запрошено, вот мой код:
regex_time_left = re.compile(r'(Starts|Ends) in ([0-9]{2})h ([0-9]{2})m ([0-9]{2})s')
for product_page in indi_product_urls:
time_left = ff.find_elements(By.CSS_SELECTOR, 'span[id*=deal_expiry_timer_]')
if len(time_left) > 0:
time_left = regex_time_left.findall(time_left[0].text) # [('Ends', '00', '32', '31')]
starts_ends = time_left[0][0]
hours = time_left[0][1]
minutes = time_left[0][2]
seconds = time_left[0][3]
Есть идеи?