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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *