python datetime.strptime을 써서 날짜형식을 바꾸려는데 Value Error가 뜹니다.
조회수 2918회
제가 포맷하려는 데이터는 [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 답변
-
시간/분/초 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)
댓글 입력