시간의 차를 계산하게 되면 timedelta 를 가지게 됩니다.
아래 예를 보세요
>>> import datetime
>>> first_time_stamp = datetime.datetime.now()
>>> first_time_stamp2 = datetime.datetime.now()
>>> diff = first_time_stamp2-first_time_stamp
>>> diff
datetime.timedelta(0, 5, 340000)
>>> print diff
0:00:05.340000
>>>
시간의 차는 "0:00:05.340000" 이런 형태의 시간이 나오게 됩니다.
해당 string을 다시 숫자로 어떻게 변환 해야 할까요?
예제 "1:22:33.123456" 이런 timedelta string을 파서를 이용해서 읽도록 합니다.
>>> import re
>>> re_compile = re.compile("(\d+)\:(\d+)\:(\d+)\.(\d+)")
>>> _c = re_compile.search("1:22:33.123456")
>>> _time = (int(_c.group(1))*60*60) + (int(_c.group(2))*60) + (int(_c.group(3))) + (int(_c.group(4)) / 1000000.0)
>>>
>>> print _time
4953.123456
>>>
파서는 re 모듈을 이용합니다.
파싱은 정규식을 통해서 하게됩니다.
정규식과 조금 다른 부분은 ( ) 괄호 기능이 되겠습니다.
괄호는 group(1), group(2) 이런식으로 결과값을 가져 올 수 있습니다.
즉 (숫자):(숫자):(숫자).(숫자) 이런식으로 표현이 되며 괄호하나당 그룹번호 하나에 대칭이 됩니다.
숫자를 나타내는 정규식은 d 가 되며 그냥 python에서는 그냥 표현되지 않으며 \d 라고 표현해야 합니다.
그리고 + 는 정규식에서 하나이상 있다라는 의미 해당건은 정규식 관련해서 검색해 보면 될 것 같습니다.
댓글 없음:
댓글 쓰기