당신이 추측 할 수파이썬 정규식 : 초
['23m3s', '23:34', '53min 3sec', '2h 3m', '22.10', '1:23:33', ...]
을 다음과 같이 내가 목록에 지속 시간의 무리가 혼합 된 형식 문자열 기간은, 사용되는 서식의 시간 N 순열이 있습니다.
파이썬에서 각 요소의 지속 시간을 초 단위로 추출하는 가장 효율적이거나 간단한 방법은 무엇입니까?
당신이 추측 할 수파이썬 정규식 : 초
['23m3s', '23:34', '53min 3sec', '2h 3m', '22.10', '1:23:33', ...]
을 다음과 같이 내가 목록에 지속 시간의 무리가 혼합 된 형식 문자열 기간은, 사용되는 서식의 시간 N 순열이 있습니다.
파이썬에서 각 요소의 지속 시간을 초 단위로 추출하는 가장 효율적이거나 간단한 방법은 무엇입니까?
이것은 아마도 약간 미숙하지만 지금까지 게시 한 모든 데이터에 대한 트릭을 수행하는 것으로 보입니다. 두 번째 합계는 모두 내가 기대하는 것입니다. re
과 timedelta
의 조합은이 작은 샘플의 트릭을 수행하는 것으로 보입니다. 정규 표현식에의 사전
>>> import re
>>> from datetime import timedelta
첫째 :
>>> def convert_to_seconds(*time_str):
timedeltas = []
for t in time_str:
td = timedelta(0)
for key in d:
for regex in d[key]:
if regex.search(t):
if key == 'hours':
td += timedelta(hours=int(regex.search(t).group(1)))
elif key == 'minutes':
td += timedelta(seconds=int(regex.search(t).group(1)) * 60)
elif key == 'seconds':
td += timedelta(seconds=int(regex.search(t).group(1)))
print(td.seconds)
: 는 귀하의 의견 그리고
d = {'hours': [re.compile(r'(\d+)(?=h)'), re.compile(r'^(\d+)[:.]\d+[:.]\d+')],
'minutes': [re.compile(r'(\d+)(?=m)'), re.compile(r'^(\d+)[:.]\d+$'),
re.compile(r'^\d+[.:](\d+)[.:]\d+')], 'seconds': [re.compile(r'(\d+)(?=s)'),
re.compile(r'^\d+[.:]\d+[.:](\d+)'), re.compile(r'^\d+[:.](\d+)$')]}
정규 표현식에 밖으로 시도하는 기능 (아마도 여전히 비트 원유)에 근거한 업데이트 결과는 다음과 같습니다.
>>> convert_to_seconds(*t)
1383
1414
3183
7380
1330
5013
더 많은 데이터가 발생할 때마다 정규 표현식을 더 추가 할 수 있지만 어느 정도까지만 가능합니다.
좋은 물건입니다. 그리고 나는이 길을 탐색했지만,'정규 표현식 사전 '에 계속 추가해야했습니다. 고맙습니다. –
23 : 34는 23 분 34 초가 아니라 23 시간 34 분입니다. 감사합니다. '22.10 '과 동일합니다. – Toto
@ m42 그 점을 지적 해 주셔서 감사합니다. 나는이 효과에 대한 OP의 코멘트를 놓쳤다. 정규 표현식을 업데이트하고 새로운 결과를 게시했습니다. –
: -O 그러나 그들은 모두 무작위입니까? 내 말은, 예를 들어, 23:34 무엇입니까? 23 시간 34 분? 아니면 1시 23 분 33 초? 1 일 23 시간 33 분, 1 시간 23 분 33 초 같습니까? – maurelio79
당신은 각각에 대해'strptime' 포맷을 작성하고 그것을 루프로 파싱해야합니다. – roippi
@ maurelio79 23:34는 23m 34s이고 1.23.33은 1h 23m 33s입니다. 이것이 항상 그렇다고 가정 해 봅시다. –