본문 바로가기
Python

파이썬 unconverted data remains 에러 해결하기

by 산코디 2023. 1. 26.

 

 

 

안녕하세요.

오늘은 파이썬에서 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

 

반응형