假设我有一个类似于'2:19.83 blah blah...blah blah'
格式的字符串,minutes:seconds.centiseconds blah...
并且blah
可以表示除换行符以外的任何字符序列。
我想解析并得到四舍五入的秒数。所以在上面的例子中,结果是139
.
做这个的最好方式是什么?
我会首先从字符串中获取时间部分
>>> newstring=s.split('.',1)[0]
然后我会使用 strptime 阅读它......
>>> tt=time.strptime(newstring,"%M:%S")
最后,以秒为单位获取时间。
>>> tt.tm_min * 60 + tt.tm_sec
不是 1-liner,但非常简单......
sum(x*y for x,y in zip(map(int, re.findall(r'^(\d+):(\d+)', string)[0]), [60,1]))
这个怎么样?我承认也许不是特别漂亮,但我认为功能性和易于理解。
给定
s = '2:19.83'
和
tmp = s.split(':')
min = int(tmp[0])
sec = int(tmp[1].split('.')[0])
total_secs = min * 60 + sec
print total_secs
产量
139
这似乎可以满足您的需要:
>>> s = '2:19.83 blah blah...blah blah'
>>> import re
>>> m = re.match(r'(?P<min>\d):(?P<sec>\d{2})\.\d+', s)
>>> if m:
... seconds = (int(m.group('min')) * 60) + int(m.group('sec'))
... print seconds
139