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

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *