Come risolvere il problema: errore di tipo: oggetto stringa o byte previsto
Un errore che potresti riscontrare quando usi Python è:
TypeError : expected string or bytes-like object
Questo errore di solito si verifica quando provi a utilizzare la funzione re.sub() per sostituire alcuni modelli in un oggetto ma l’oggetto con cui stai lavorando non è interamente costituito da stringhe.
L’esempio seguente mostra come correggere questo errore nella pratica.
Come riprodurre l’errore
Supponiamo di avere la seguente lista di valori:
#define list of values
x = [1, 'A', 2, 'B', 5, 'C', 'D', 'E']
Supponiamo ora di provare a sostituire ogni non lettera nell’elenco con una stringa vuota:
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
Riceviamo un errore perché alcuni valori nell’elenco non sono stringhe.
Come correggere l’errore
Il modo più semplice per correggere questo errore è convertire l’elenco in un oggetto stringa racchiudendolo nell’operatore 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
Tieni presente che non riceviamo un errore perché abbiamo prima utilizzato str() per convertire l’elenco in un oggetto stringa.
Il risultato è l’elenco originale con ogni lettera diversa sostituita da uno spazio.
Nota : puoi trovare la documentazione completa per la funzione re.sub() qui .
Risorse addizionali
I seguenti tutorial spiegano come correggere altri errori comuni in Python:
Come correggere l’errore chiave nei Panda
Come risolvere il problema: ValueError: impossibile convertire float NaN in int
Come risolvere il problema: ValueError: non è stato possibile trasmettere gli operandi con le forme