그와 같은 문자열은 적어도 나에게 시간 경과 또는 시간 간격처럼 보입니다. 그렇다면 timedelta
개체를 사용하여 제안하는 것이 좋습니다. 이렇게하는 것의 한 가지 장점은 임의의 시간 간격을 더하거나 뺍니다.
첫 번째 변환 : 정규식을 사용하여 문자열에서 항목을 분할하도록 선택했지만 물론 가장 편리하다고 생각되는 기술을 사용할 수도 있습니다. 먼저 timedelta
생성 함수에 대한 모든 매개 변수에 대한 사전을 작성하여 timedelta_args
으로 시작합니다. 그런 다음이 사전의 선택된 항목을 정규식을 사용하여 문자열에서 구문 분석 한 값으로 바꿉니다. 그런 다음이 함수가 예상하는 순서대로 값을 넣으 려서 사전의 모든 값을 timedelta
으로 전달합니다. timespan
의 값은 속성 값과 마찬가지로 내가 원했던 값입니다. 밀리 초 1,000 이상의 I은 쉽게 원래의 문자열을 얻을 수 같이
>>> from datetime import timedelta
>>> import re
>>> s = '00:00:40,249'
>>> timedelta_args = {'days':0, 'seconds':0, 'microseconds':0, 'milliseconds':0, 'minutes':0, 'hours':0, 'weeks':0}
>>> timedelta_args['hours'], timedelta_args['minutes'], timedelta_args['seconds'], timedelta_args['milliseconds'] = map(int, re.split(r'[:,]', s))
>>> timespan = timedelta(*[timedelta_args[_] for _ in ['days', 'seconds', 'microseconds', 'milliseconds', 'minutes', 'hours', 'weeks']])
>>> timespan
datetime.timedelta(0, 40, 249000)
>>> timespan.seconds
40
>>> timespan.microseconds
249000
나는만큼 쉽게 timespan
의 스트링 표현을 획득하고있다.timespan
이후
>>> str(timespan)
'0:00:40.249000'
>>> str(timespan)[:-3]
'0:00:40.249'
>>> str(timespan)[:-3].replace('.', ',')
'0:00:40,249'
내가 그것을 추가 (그리고 그것에서 빼기) 할 수있는 timedelta
입니다. 원시 결과는 매우 만족스럽지 않을 수 있습니다. 그러나이 기능은 곧 str
기능을 보완합니다.
>>> timespan + timedelta(hours=3, seconds=20)
datetime.timedelta(0, 10860, 249000)
>>> str(timespan + timedelta(hours=3, seconds=20))
'3:01:00.249000'
서식을 지정할 때 상당히 사소한 장애가 있음을 유의하십시오. microseconds
속성이 0이면 문자열 표현으로 완전히 해제됩니다./:
>>> str(timespan + timedelta(hours=3, microseconds=751000))
'3:00:41'
는 '이 존재하지 않는 밀리를 사용하지 않는 datetime.time' 목적은 가능한 유일한 특성 이것은이 [XY 증상 (HTTPS 인 세 개의 추가 제로 – abccd
을 갖는 마이크로 초 /meta.stackexchange.com/questions/66377/what-is-the-xy-problem), 우리는 당신의 코드와 실제로하려는 것을 보여줘야한다. –