加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 如何解析时间

发布时间:2020-12-20 12:32:03 所属栏目:Python 来源:网络整理
导读:有没有办法解析下面的时间,而不是像s.spilt()一样多次使用hacky? s = 'PT1H28M26S' 我想得到: num_mins = 88 解决方法 使用平移删除P,T和M,然后使用拆分提取小时和分钟的秒数: s = 'PT1H28M26S'hr,min = map(int,s.translate(None,"PTMS")[:-2].split("H"
有没有办法解析下面的时间,而不是像s.spilt()一样多次使用hacky?

s = 'PT1H28M26S'

我想得到:

num_mins = 88

解决方法

使用平移删除P,T和M,然后使用拆分提取小时和分钟的秒数:

s = 'PT1H28M26S'

hr,min = map(int,s.translate(None,"PTMS")[:-2].split("H"))
print(hr,min)
(1,28)

如果您可能有几位数的秒数,请将它们关闭:

hr,min =  map(int,s[2:].rstrip("0123456789S")[:-1].split("H"))

一些时间显示发现是最有效和最少的时间:

In [38]: r  = re.compile(r"PT(d+)H(d+)M(d+)S")

In [39]: %%timeit
   ....: match = r.search(s)
   ....: h,m,_ = map(int,match.groups())
   ....: 
100000 loops,best of 3: 3.16 μs per loop

In [40]: timeit t=time.strptime('PT1H28M2S',"PT%HH%MM%SS")
100000 loops,best of 3: 13.3 μs per loop

In [41]: timeit hr,s[2:].rstrip("0123456789S")[:-1].split("H"))
100000 loops,best of 3: 1.96 μs per loop
In [43]: timeit num_mins = int(s[s.find('H')-1]) * 60 +   int(s[s.find('H')+1:s.find('M')]) 
1000000 loops,best of 3: 1.54 μs per loop

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读