"PT" 在python中格式化的时间字符串。

问题描述 投票:0回答:1

我收到的字符串格式如下。"PTXMYS" X是分钟数,Y是秒数。

我想把这个字符串变成一个 "PTXMYS"。int 呈现出总的秒数。datetime 和其他的东西,对我来说就是不行,我在网上看到这个格式是iso8601的标准格式,所以我觉得很奇怪,真的不行。

字符串的例子。

x="PT4M13S"
python datetime python-3.6 iso
1个回答
1
投票

你想做的事情可以用regex轻松解决。试试这个。

import re
m, s = re.findall('PT(\d+)M(\d+)S',x)[0]
total_secs = 60*int(m) + int(s)
print(total_secs)

输出

253

0
投票

有一个第三方的库可以解析这些字符串。isodate:

import isodate
isodate.parse_duration("PT4M13S")
# datetime.timedelta(seconds=253)
isodate.parse_duration("PT4M13S").total_seconds()
# 253.0

为了完整起见,有一个选项可以通过以下方式来实现这一点: datetime's strptimetimedelta's 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
© www.soinside.com 2019 - 2024. All rights reserved.