有没有一种方法可以解析接下来的时间,而不用像s.spilt()
很多次一样笨拙?
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"))
一些计时表明find是最有效的,而时间最少的是:
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, min = map(int,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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句