【问题标题】:"PT" Formatted time string in pythonpython中的“PT”格式化时间字符串
【发布时间】:2020-09-20 15:15:03
【问题描述】:
我收到一个格式如下的字符串:“PTXMYS” 其中 X 是分钟数,Y 是秒数。
我想将该字符串转换为int,它表示总秒数。
我尝试使用 datetime 和其他东西,但它对我不起作用,我在网上看到这种格式是 iso8601 的标准格式,所以对我来说很奇怪,它并没有真正起作用。
字符串示例:
x="PT4M13S"
【问题讨论】:
标签:
python
datetime
python-3.6
iso
【解决方案1】:
使用正则表达式可以轻松解决您尝试做的事情。试试这个:
import re
m, s = re.findall('PT(\d+)M(\d+)S',x)[0]
total_secs = 60*int(m) + int(s)
print(total_secs)
输出:
253
【解决方案2】:
有一个第三方库可以解析这些字符串,isodate:
import isodate
isodate.parse_duration("PT4M13S")
# datetime.timedelta(seconds=253)
isodate.parse_duration("PT4M13S").total_seconds()
# 253.0
为了完整起见,可以选择使用datetime 的strptime 和timedelta 的total_seconds():
from datetime import datetime, timedelta
# parse minute and second to datetime object:
t = datetime.strptime("PT4M13S","PT%MM%SS")
# convert to timedelta to get the total seconds
td = timedelta(minutes=t.minute, seconds=t.second)
td.total_seconds()
# 253