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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |