2017-02-05 1 views
1

datetime 형식으로 변환해야하는 문자열이 있습니다. 문제는 항상 동일한 형식을 갖는 것은 아니라는 것입니다. 지금 당장 사용할 수있는 모든 형식을 시도하는 것을 제외하고는 try를 사용하고 있습니다 (아래 코드 참조). 모든 시간 형식에 대해 일반적으로이를 수행 할 수있는 방법이 있습니까?다른 형식의 구문 분석 시간

import datetime 

def get_time(start_time):  
     try: 
      start_time = datetime.datetime.strptime(start_time, '%m/%d/%y %H:%M:%S')          
      return start_time 
     except: 
      try: 
       start_time = datetime.datetime.strptime(start_time, '%H:%M:%S')     
       return start_time 
      except: 
       try: 
        start_time = datetime.datetime.strptime(start_time, '%m/%d/%Y %H:%M')      
        return start_time 
       except: 
        print("Error could not convert datetime format") 
+0

패턴과'for' 루프가있는 목록을 사용하십시오. – furas

답변

3

나는 dateutil이 같은 작업에 매우 유용 할 것이라고 생각 - 그것은 대부분의 서식을 적절히 구문 분석 할 수 있습니다. 또한

>>> from dateutil import parser 
>>> parser.parse(start_time) 

, 난 당신이 시도가/문을 제외하고, 그러나 당신은 그냥 목록에서 형식을 모두 배치해야하며, 하나의 시도-제외하고 대신 추한의 블록 목록을 반복하여 올바른 생각을 가지고 생각 중첩.

formats = ['%m/%d/%y %H:%M:%S', '%H:%M:%S', '%m/%d/%Y %H:%M']    
def get_time(start_time): 
    for formt in formats: 
     try: 
      return datetime.strptime(start_time, formt) 
     except ValueError: 
      pass 
    print('Could not convert datetime format') 
    # or raise an error 
+0

고마워 미치, 네 말이 맞다. – sparrow

+0

@sparrow 환영합니다! – miradulo