如何在python中使用re从PT格式的datetime提取分钟和秒

如何在python中使用re从PT格式的datetime提取分钟和秒,python,regex,python-3.x,Python,Regex,Python 3.x,如何从时间格式PT34M23S或PT32S中提取分和秒,并将其转换为总秒数 重新导入 M=重新编译('[\d]+M') S=重新编译('[\d]+S') txt='PT32S' m=重新编译('[\d]+')) s=重新编译('[\d]+')) 如果M.findall(txt)=[]: 分钟=M.findall(txt) secs=S.findall(txt) mm=m.findall(分钟[0]) ss=s.findall(秒[0]) 其他: ss=s.finall(s.findall(txt

如何从时间格式
PT34M23S
PT32S
中提取分和秒,并将其转换为总秒数

重新导入
M=重新编译('[\d]+M')
S=重新编译('[\d]+S')
txt='PT32S'
m=重新编译('[\d]+'))
s=重新编译('[\d]+'))
如果M.findall(txt)=[]:
分钟=M.findall(txt)
secs=S.findall(txt)
mm=m.findall(分钟[0])
ss=s.findall(秒[0])
其他:
ss=s.finall(s.findall(txt)[0])

以下是从这些日期格式中提取秒数的几个选项

使用:

使用图书馆:


以下是从这些日期格式中提取秒数的几个选项

使用:

使用图书馆:

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
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