Como corrigir: erro de tipo: objeto de string ou bytes esperado
Um erro que você pode encontrar ao usar Python é:
TypeError : expected string or bytes-like object
Este erro geralmente ocorre quando você tenta usar a função re.sub() para substituir alguns padrões em um objeto, mas o objeto com o qual você está trabalhando não é inteiramente strings.
O exemplo a seguir mostra como corrigir esse erro na prática.
Como reproduzir o erro
Suponha que temos a seguinte lista de valores:
#define list of values
x = [1, 'A', 2, 'B', 5, 'C', 'D', 'E']
Agora suponha que tentamos substituir todas as não letras da lista por uma string vazia:
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
Recebemos um erro porque alguns valores da lista não são strings.
Como corrigir o erro
A maneira mais fácil de corrigir esse erro é converter a lista em um objeto string envolvendo-a no operador 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
Observe que não estamos recebendo um erro porque usamos str() para converter primeiro a lista em um objeto string.
O resultado é a lista original com cada letra não substituída por um espaço.
Nota : Você pode encontrar a documentação completa da função re.sub() aqui .
Recursos adicionais
Os tutoriais a seguir explicam como corrigir outros erros comuns em Python:
Como corrigir KeyError em Pandas
Como corrigir: ValueError: não é possível converter float NaN em int
Como corrigir: ValueError: os operandos não puderam ser transmitidos com formas