2015년 2월 14일 토요일

python 파서 사용하기 : (부제:timedelta string 파서)

시간의 차를 계산하게 되면 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 라고 표현해야 합니다. 그리고 + 는 정규식에서 하나이상 있다라는 의미 해당건은 정규식 관련해서 검색해 보면 될 것 같습니다.

댓글 없음:

댓글 쓰기