수정 방법: 유형 오류: 예상 문자열 또는 바이트 개체


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: 피연산자를 모양과 함께 브로드캐스트할 수 없습니다.

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다