Python/Debugging

ValueError: invalid literal for int() with base 10: '' 해결

jimmy_AI 2022. 3. 27. 23:12
반응형

빈 문자열, 공백 int 변환 오류 디버깅

리스트 내 문자열 숫자 자료들을 정수형으로 변환하려는 도중,

빈 문자열이 포함되어 있어 아래와 같은 오류가 발생하였습니다.

list_a = ['', '0', '1', '2', '3', '4', '5']

list_b = list(map(int, list_a)) # int형 변환 시도
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-7-c347e10bc371> in <module>()
      1 list_a = ['', '0', '1', '2', '3', '4', '5']
      2 
----> 3 list_b = list(map(int, list_a)) # int형 변환 시도

ValueError: invalid literal for int() with base 10: ''

참고로, 실제로 변환을 시도했던 리스트는 위의 예시보다는 훨씬 복잡했고,

빈 문자열의 존재는 디버깅 과정에서 알게 되었습니다.

 

 

오류 원인

파이썬 내장 int 변환 함수는 변환하려는 문자열에 숫자가 아닌 다른 문자가 있다면

위와 같은 ValueError를 반환하는데,

숫자가 아예 포함되어 있지 않은 빈 문자열이나 공백의 경우에도 같은 오류를 반환했습니다.

int('') # ValueError: invalid literal for int() with base 10: ''

int(' ') # ValueError: invalid literal for int() with base 10: ' '

 

 

오류 해결법

위에서 겪었던 경우에서는 리스트 내에서 문제가 되는 빈 문자열을 remove 함수로 제거해주니

에러가 바로 해결되었습니다.

list_a = ['', '0', '1', '2', '3', '4', '5']
list_a.remove('') # 문제가 되는 빈 문자열 제거

list_b = list(map(int, list_a)) # [0, 1, 2, 3, 4, 5]