반응형
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
반응형
'파이썬' 카테고리의 다른 글
파이썬 Handling \r\n vs \n newlines in python on Mac vs Windows (0) | 2020.10.16 |
---|---|
파이썬 1D numpy 배열에서 Numpy를 사용하여 로컬 최대 값 / 최소값 찾기 (0) | 2020.10.16 |
파이썬 Replace first occurrence of string in Python (0) | 2020.10.16 |
파이썬 dump () 필수 위치 인수 1 개 누락 : Python json의 'fp' (0) | 2020.10.16 |
파이썬 목록의 정수에 추가 (0) | 2020.10.16 |
댓글