수정 방법: 유형 오류: 예상 문자열 또는 바이트 개체
Python을 사용할 때 발생할 수 있는 오류는 다음과 같습니다.
TypeError : expected string or bytes-like object
이 오류는 일반적으로 re.sub() 함수를 사용하여 객체의 일부 패턴을 바꾸려고 하지만 작업 중인 객체가 전체 문자열이 아닐 때 발생합니다.
다음 예에서는 실제로 이 오류를 수정하는 방법을 보여줍니다.
오류를 재현하는 방법
다음과 같은 값 목록이 있다고 가정합니다.
#define list of values
x = [1, 'A', 2, 'B', 5, 'C', 'D', 'E']
이제 목록에 있는 문자가 아닌 모든 문자를 빈 문자열로 바꾸려고 한다고 가정해 보겠습니다.
import re
#attempt to replace each non-letter with empty string
x = re. sub (' [^a-zA-Z] ', '', x)
TypeError : expected string or bytes-like object
목록의 일부 값이 문자열이 아니기 때문에 오류가 발생합니다.
오류를 수정하는 방법
이 오류를 해결하는 가장 쉬운 방법은 목록을 str() 연산자로 래핑하여 문자열 개체로 변환하는 것입니다.
import re
#replace each non-letter with empty string
x = re. sub (' [^a-zA-Z] ', '', str (x))
#display results
print (x)
A B C D E
먼저 목록을 문자열 객체로 변환하기 위해 str()을 사용했기 때문에 오류가 발생하지 않는다는 점에 유의하세요.
결과는 문자가 아닌 각 문자가 공백으로 대체된 원본 목록입니다.
참고 : re.sub() 함수에 대한 전체 문서는 여기에서 찾을 수 있습니다.
추가 리소스
다음 튜토리얼에서는 Python의 다른 일반적인 오류를 수정하는 방법을 설명합니다.
Pandas에서 KeyError를 수정하는 방법
해결 방법: ValueError: float NaN을 int로 변환할 수 없습니다.
해결 방법: ValueError: 피연산자를 모양과 함께 브로드캐스트할 수 없습니다.