반응형
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
'프로그래밍 > Python' 카테고리의 다른 글
UV Python Package / Project Manager (0) | 2025.01.03 |
---|---|
[Python] 2117658/8642334 와 연분수표현 (0) | 2022.12.22 |
[Python] 십진수소수 이진수로 변환하기 (0) | 2022.09.21 |
Flask ImportError: cannot import name 'soft_unicode' from 'markupsafe' (0) | 2022.07.19 |
pyupbit WebSocketClient 예제코드를 실행할 때, TypeError: 'async for' requires an object with __aiter__ method, got Connect (0) | 2022.07.12 |