728x90
ValueError: invalid literal for int() with base 10: 'abc'
오류는 문자열을 정수형으로 변환하려고 할 때, 해당 문자열이 10진수 정수로 해석할 수 없는 내용일 경우 발생합니다. 즉, int()
함수는 내부적으로 숫자만 포함된 문자열만 처리할 수 있으며, 영문자나 특수 문자가 포함된 경우에는 변환에 실패하게 됩니다.
이 오류는 사용자 입력 처리, 파일에서 읽은 데이터 변환, 웹 파라미터 처리 등 외부 문자열 데이터를 int()
로 변환할 때 자주 발생합니다. 따라서 해당 문자열이 실제로 정수로 변환 가능한지 사전에 확인하거나 예외 처리가 필요합니다.
● 오류 발생 예시
value = "abc"
num = int(value)
위 코드는 value
에 숫자가 아닌 문자열 'abc'
가 저장되어 있기 때문에 정수형으로 변환하려 할 때 오류가 발생합니다.
ValueError: invalid literal for int() with base 10: 'abc'
● 해결 방법
- 입력값이 숫자로만 구성되었는지
isdigit()
함수로 사전 확인 - 예외 처리를 통해 잘못된 입력을 무시하거나 기본값으로 대체
- float 값의 경우
float()
로 먼저 변환 후int()
적용
● 예시 코드
value = "123"
if value.isdigit():
num = int(value)
print(num)
else:
print("숫자가 아닙니다.")
● 자주 하는 실수
- 사용자 입력을 검증 없이 바로
int()
로 변환 - 공백, 쉼표, 문자 등이 섞인 문자열을 숫자로 처리
None
이나 빈 문자열(''
)에 대해 변환 시도
● 결론
ValueError - invalid literal for int()
오류는 문자열이 정수형으로 해석될 수 없을 때 발생합니다. 사용자 입력이나 외부 데이터처럼 신뢰할 수 없는 문자열을 처리할 때는 반드시 변환 전에 문자열이 유효한지 검사하거나 예외 처리(try-except
) 구문을 활용하여 안정성을 확보해야 합니다.
728x90