반응형
빈 문자열, 공백 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]
'Python > Debugging' 카테고리의 다른 글
AttributeError: __enter__ 원인과 해결법 (0) | 2022.03.28 |
---|---|
ModuleNotFoundError: No module named 'fused_layer_norm_cuda' 해결법 (0) | 2022.03.21 |
pip install 과정 SSLError 오류 해결(주피터노트북 설치 오류 예시) (0) | 2022.03.19 |