python datetime.strptime을 써서 날짜형식을 바꾸려는데 Value Error가 뜹니다.

조회수 2916회

제가 포맷하려는 데이터는 [20160610]T[0] 이라는 형식의 날짜 데이터입니다.

반복문으로 가져와서

저 데이터를 '%sT%s' 이렇게 하나의 문자열로 만들려고 datetime.strptime를 사용하여

'[%Y%m%d]T[%H%M%S]' 형식으로 지정하였는데

Value Error: does not match format이뜹니다.

원인은 [%H%M%S] 의 형식을 가져오는 와중에 데이터가 [0] 밖에 들어가있지않아서 에러가 뜨는것 같습니다.

다른 데이터 [12531], [12239]처럼 6자리가 안되는 4~5자리 데이터는

자동으로 시나 분 혹은 초에 0이 삽입되어서

1시 25 31초나 1시 22분 39초로 자동 매핑되어 변환에 문제가 없었는데

유독 저자릿수가 1자리나 2자리일때만 문제가 발생합니다.

도움주시면 감사하겠습니다.

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    시간/분/초 3가지로 구분해서 읽어들이려고 하는데 입력 길이가 3이 안되는 경우, 시간/분/초 각각으로 매칭할 수 있는 방법이 없기 때문입니다.

    import datetime
    datetime.datetime.strptime("12","%M%S")
    

    위와 같이 %M%S인 경우 2자리더라도 에러가 발생하지 않습니다.

    간단히 길이가 3이 안되는 경우 아래와 같이 0을 채워 넣으면 되지 않을까요?

    text = '[20160714]T[21]'
    
    digits = len(text[12:-1])
    if digits < 3:
        text = text[:-1]+("0"*(3-digits))+"]"
    
    print(text)
    
    • 감사합니다! DKs 2016.7.18 14:12

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)