【问题标题】:"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
    

    为了完整起见,可以选择使用datetimestrptimetimedeltatotal_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
    

    【讨论】:

      猜你喜欢
      • 2014-03-04
      • 1970-01-01
      • 1970-01-01
      • 2016-12-14
      • 1970-01-01
      • 1970-01-01
      • 2010-10-05
      • 1970-01-01
      相关资源
      最近更新 更多