728x90
ValueError: invalid literal for int() with base 10: 'abc'
오류는 문자열을 정수로 변환하려 할 때, 숫자로 해석할 수 없는 문자열이 포함되어 있을 경우 발생합니다.
이 오류는 int()
함수 사용 시 문자열이 10진수 형식이어야 한다는 조건을 충족하지 않을 때 발생합니다. 예를 들어 'abc', '3.14', '', '$100' 등은 정수 변환이 불가능합니다.
● 오류 발생 예시
value = 'abc'
num = int(value) # 오류 발생
위 코드에서 'abc'
는 숫자로 변환할 수 없기 때문에 ValueError
가 발생합니다.
● 주요 원인
- 숫자가 아닌 문자열을 int()로 변환 시도
- 공백, 특수문자, 소수점 등이 포함된 문자열
- 빈 문자열을 int()로 변환 시도
● 해결 방법
- 문자열이 숫자인지 먼저 확인:
str.isdigit()
사용 try-except
블록으로 예외 처리- 데이터 정제: 숫자 외의 문자 제거 또는 정규표현식으로 필터링
● 예시 코드 (정상 처리)
value = '123'
if value.isdigit():
num = int(value)
print(num)
else:
print("숫자로 변환할 수 없습니다.")
● 결론
int()
함수를 사용할 때는 변환 대상 문자열이 10진수 형식의 숫자인지 확인이 필요합니다. 데이터 유효성 검사를 통해 프로그램이 중단되지 않도록 예외 상황을 처리하는 습관을 들이는 것이 좋습니다.
728x90