본문 바로가기
파이썬

파이썬 간단한 문자열에서 timedelta 객체를 생성하는 방법

by º기록 2020. 10. 16.
반응형

timedelta 입력이 문자열로 전달되어야하는 함수를 작성 중입니다. 사용자는 "32m"또는 "2h32m"또는 "4:13"또는 "5hr34m56s"와 같은 것을 입력해야합니다. 라이브러리 또는 이러한 종류의 기능이 이미 구현 된 것이 있습니까?

 

해결 방법

 

첫 번째 형식 (5hr34m56s)의 경우 정규 표현식을 사용하여 구문 분석해야합니다.

다음은 재 기반 솔루션입니다.

import re
from datetime import timedelta


regex = re.compile(r'((?P<hours>\d+?)hr)?((?P<minutes>\d+?)m)?((?P<seconds>\d+?)s)?')


def parse_time(time_str):
    parts = regex.match(time_str)
    if not parts:
        return
    parts = parts.groupdict()
    time_params = {}
    for (name, param) in parts.iteritems():
        if param:
            time_params[name] = int(param)
    return timedelta(**time_params)


>>> from parse_time import parse_time
>>> parse_time('12hr')
datetime.timedelta(0, 43200)
>>> parse_time('12hr5m10s')
datetime.timedelta(0, 43510)
>>> parse_time('12hr10s')
datetime.timedelta(0, 43210)
>>> parse_time('10s')
datetime.timedelta(0, 10)
>>> 

 

참조 페이지 https://stackoverflow.com/questions/4628122

 

 

반응형

댓글