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


제가 포맷하려는 데이터는 [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자리일때만 문제가 발생합니다.

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

  • 2016년 07월 15일에 작성됨
    학생이며 게임, db분석쪽에 관심을 가지고있습니다.

조회수 161


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)
  • 2016년 07월 16일에 작성됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.

  • 감사합니다!    quickiz   2016.7.18 14:12     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close