안녕하세요.
오늘은 파이썬에서 time.strptime() 함수를 사용하면서 발생하는 에러 'ValueError: unconverted data remains:'에 대해 알아보고 어떻게 해결하는지 정리해 보도록 하겠습니다.
그럼 예제를 통해 바로 알아보도록 하겠습니다.
1. 에러 발생 예제 소스 코드
import time
def task():
# strptime
str = '2023-01-01 09:10:05'
strptime = time.strptime(str, '%Y-%m-%d %H:%M')
print(strptime)
if __name__ == '__main__':
task()
위의 예제 소스 코드를 보게 되면 일반적인 날짜 parse 처리하는 소스 코드입니다. 크게 문제가 돼 보이진 않습니다. 하지만 위의 소스 코드를 실행하게 되면 오늘 주제의 에러 내용인 'ValueError: unconverted data remains:'가 발생합니다. 에러가 나는 결과 화면을 확인해 보겠습니다.
실행 결과
실행 결과는 동일한 에러가 발생을 했습니다.
에러 내용을 자세히 보게 되면 'unconverted data remains: :05' 이렇게 나와 있는데, 에러 내용은 parsing 하고자 하는 대상 날짜값에서 ':05' 부분이 정상적으로 parsing이 되지 않았다는 내용입니다.
strptime('대상날짜', 'parse 코드')
위의 코드처럼 parse 코드를 입력하게 되는데 입력값의 format이 대상 날짜와 일치하지 않아 발생을 했습니다.
str = '2023-01-01 09:10:05'
strptime = time.strptime(str, '%Y-%m-%d %H:%M')
소스 코드를 보게 되면 str 값은 연월일시분초까지 입력이 돼있고, 바로 아래 format 하고자 하는 코드에서는 연월일시분까지만 입력되어 있습니다.
'2023-01-01 09:10:05'
'%Y-%m-%d %H:%M'
그래서 위와 같은 에러가 발생했을 경우에는 parsing 할 코드값을 대상날짜에 맞춰 변경을 시켜주면 됩니다.
변경된 소스 코드를 보겠습니다.
2. 정상 예제 소스 코드
import time
def task():
# strptime
str = '2023-01-01 09:10:05'
strptime = time.strptime(str, '%Y-%m-%d %H:%M:%S')
print(strptime)
if __name__ == '__main__':
task()
위의 에러가 발생했던 예제 소스 코드에서 format 코드 값이 들어가는 부분만 수정을 해줬습니다.
'%Y-%m-%d %H:%M' -> '%Y-%m-%d %H:%M:%S' ( 마지막에 ':%S' 추가)
실행 결과
format 코드값을 맞춰주니 에러 없이 정상 출력이 됐습니다!
마무리
에러 원인
strptime = time.strptime('2023-01-01 09:10:05', '%Y-%m-%d %H:%M')
time.strptime('대상 날짜', 'format 코드') 함수를 사용할 때 대상 날짜와 format 코드가 일치하지 않을 경우 에러 발생
해결 방안
strptime = time.strptime('2023-01-01 09:10:05', '%Y-%m-%d %H:%M:%S')
대상 날짜의 패턴에 맞춰 format 코드 변경
오늘은 이렇게 time.strptime() 함수의 에러 'ValueError: unconverted data remains:'에 대해 정리해 봤습니다. 대부분의 에러는 발생한 에러 내용에 힌트가 많이 있기 때문에 에러 내용을 유심히 보다 보면 금방 찾을 수 있습니다. 오늘 정리한 에러 내용도 간단한 내용이었습니다. 하지만 막상 실제 업무에서 위와 같은 에러가 발생을 하면 어디서 발생했는지 찾고 있을 듯합니다 ㅜ... 그래도 이렇게 글로 남겨놓는 습관을 가져보려고 합니다 :)
그럼 오늘도 저의 작고 소중한 글을 읽어주셔서 감사합니다!

* 참고
* 파이썬 시간 format과 parse 알아보기 (time strftime(), strptime())
https://sancode.tistory.com/75
* 파이썬 strptime() argument 0 must be str 에러 해결하기
https://sancode.tistory.com/76
'Python' 카테고리의 다른 글
파이썬의 딕셔너리 dict() 함수의 개념과 활용 (0) | 2024.05.08 |
---|---|
파이썬 time data 'X' does not match format '%Y-%m-%d' 에러 해결하기 (time.strptime()) (0) | 2023.01.27 |
파이썬 strptime() argument 0 must be str 에러 해결하기 (0) | 2023.01.24 |
파이썬 시간 format과 parse 알아보기 (time strftime(), strptime()) (0) | 2023.01.24 |
파이썬 시간지연 예제로 알아보기 time.sleep() (1) | 2023.01.23 |