Nasıl onarılır: tür hatası: beklenen dize veya bayt nesnesi
Python kullanırken karşılaşabileceğiniz bir hata:
TypeError : expected string or bytes-like object
Bu hata genellikle bir nesnedeki bazı kalıpları değiştirmek için re.sub() işlevini kullanmaya çalıştığınızda ancak üzerinde çalıştığınız nesnenin tamamen dizelerden oluşmadığı durumlarda ortaya çıkar.
Aşağıdaki örnekte bu hatanın pratikte nasıl düzeltileceği gösterilmektedir.
Hata nasıl yeniden oluşturulur?
Aşağıdaki değerler listesine sahip olduğumuzu varsayalım:
#define list of values
x = [1, 'A', 2, 'B', 5, 'C', 'D', 'E']
Şimdi listedeki harf olmayan her şeyi boş bir dizeyle değiştirmeye çalıştığımızı varsayalım:
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
Listedeki bazı değerler string olmadığı için hata alıyoruz.
Hata nasıl düzeltilir?
Bu hatayı düzeltmenin en kolay yolu, listeyi str() operatörüne sararak bir dize nesnesine dönüştürmektir:
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
Listeyi önce bir dize nesnesine dönüştürmek için str() işlevini kullandığımız için bir hata almadığımızı unutmayın.
Sonuç, harf olmayan her şeyin bir boşlukla değiştirildiği orijinal listedir.
Not : re.sub() işlevine ilişkin tüm belgeleri burada bulabilirsiniz.
Ek kaynaklar
Aşağıdaki eğitimlerde Python’daki diğer yaygın hataların nasıl düzeltileceği açıklanmaktadır:
Pandas’ta KeyError Nasıl Düzeltilir
Nasıl düzeltilir? ValueError: float NaN int’ye dönüştürülemiyor
Nasıl düzeltilir? ValueError: İşlenenler şekillerle yayınlanamadı