1

假设我有一个类似于'2:19.83 blah blah...blah blah'格式的字符串,minutes:seconds.centiseconds blah...并且blah可以表示除换行符以外的任何字符序列。

我想解析并得到四舍五入的秒数。所以在上面的例子中,结果是139.

做这个的最好方式是什么?

4

4 回答 4

5

我会首先从字符串中获取时间部分

>>> newstring=s.split('.',1)[0]

然后我会使用 strptime 阅读它......

>>> tt=time.strptime(newstring,"%M:%S")

最后,以秒为单位获取时间。

>>> tt.tm_min * 60 + tt.tm_sec

不是 1-liner,但非常简单......

于 2012-04-30T19:54:21.020 回答
2
sum(x*y for x,y in zip(map(int, re.findall(r'^(\d+):(\d+)', string)[0]), [60,1]))
于 2012-04-30T19:51:50.350 回答
2

这个怎么样?我承认也许不是特别漂亮,但我认为功能性和易于理解。

给定

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
于 2012-04-30T19:56:32.867 回答
1

这似乎可以满足您的需要:

>>> 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
于 2012-04-30T19:55:46.173 回答