본문 바로가기

프로그래밍/Python

[Python초보] ValueError: invalid literal for int() with base 10: ''

반응형

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

10진수 int() 로 변환할 수 없는 문자열: ''

이라는 뜻입니다. 한번 이 에러를 만들어 봅시다.

>>> num = int("1000")
>>> num
1000

"1000" 이라는 문자열을 숫자형으로 변환하여 num 이란 변수에 넣는 코드입니다. "1000"이라는 문자열은 정수를 나타내는 문자열이기 때문에, 문제없이 변환됩니다.

>>> s = "abc"
>>> num = int(s)
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    num = int(s)
ValueError: invalid literal for int() with base 10: 'abc'

"abc" 라는 문자열을 s 란 변수에 넣고, 이 문자열을 정수로 바꿔보라고 시켜보면, 당연히 정수로 바꿀 수 없기 때문에 에러가 발생합니다.

>>> s = ""
>>> num = int(s)
Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    num = int(s)
ValueError: invalid literal for int() with base 10: ''

s 에 빈 문자열을 집어넣고, 이 문자열을 정수로 바꾸라고 시켜봅시다. 빈 문자열 또한 정수로 바꿀 수 없기 때문에 에러가 발생합니다. 이 포스팅 제목과 동일한 에러메시지인 것을 확인할 수 있습니다.

잘 돌아가던 코드가 어느날 갑자기 이런 에러메시지를 뱉으며 죽을 수도 있습니다. 그런 때에는 int(복잡한변수) 와 같은 패턴의 코드를 찾아봅시다. (보통 에러메시지가 어디에서 발생한 문제인지 소스코드를 짚어줍니다.) 이제 int 안의 복잡한변수가 빈문자열로 세팅되었을 때임을 알 수 있습니다. 왜 빈문자열이 세팅되게 되었는지를 생각하며 디버깅을 하거나, 또는, 빈문자열인 경우에는 분기하여 에러가 발생하지 않도록 고쳐봅시다.

 

728x90