как извлечь минуты и секунды из даты и времени в формате PT с помощью re в python

#python #regex #python-3.x

#python #регулярное выражение #python-3.x

Вопрос:

Как мне извлечь минуты и секунды из форматов времени PT34M23S или PT32S и преобразовать их в общее количество секунд?

 import re
M= re.compile('[d] M')
S= re.compile('[d] S')

txt='PT32S'
m=re.compile('[d] ')
s=re.compile('[d] ')
if M.findall(txt)!=[]:
    mins=M.findall(txt)
    secs=S.findall(txt)
    mm=m.findall(mins[0])
    ss=s.findall(secs[0])
else:
    ss=s.finall(S.findall(txt)[0])

  

Ответ №1:

Вот несколько вариантов извлечения секунд из этих форматов даты.

Использование регулярного выражения:

 import re

txt = "PT34M23S"
seconds = 0

try:
    seconds  = int(re.search(r"(d )S$", txt).group(1))
    seconds  = int(re.search(r"(d )M", txt).group(1)) * 60
except AttributeError:
    pass

print(seconds) # => 2063
  

Использование библиотеки datetime:

 from datetime import datetime

txt = "PT34M23S"
dt = 0

try:
    dt = datetime.strptime(txt, "PT%MM%SS") 
except ValueError:
    dt = datetime.strptime(txt, "PT%SS") 

seconds = (dt - datetime.strptime("0", "%S")).total_seconds()
print(seconds) # => 2063.0