Як виправити: помилка типу: очікуваний рядок або об’єкт bytes
Під час використання 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:
Як виправити KeyError у Pandas
Як виправити: ValueError: неможливо перетворити float NaN на int
Як виправити: ValueError: операнди не можна транслювати з фігурами