Данная ошибка «AttributeError: у объекта str нет атрибута decode» декодирования атрибута возникает в Python, когда вы пытаетесь декодировать уже декодированные строки.

Воспроизведение ошибки
|
1 2 3 |
str = "argentina" print(str.decode()) |
Выход
|
1 |
AttributeError: 'str' object has no attribute 'decode' |
Мы получаем AttributeError, поскольку метод decode() доступен для байтовых, а не строковых объектов. Он преобразует байтовый объект в строковый объект, используя указанную кодировку.
Как исправить AttributeError: объект str не имеет атрибута decode
Способ 1: используйте функцию decode() для объекта байтов
Чтобы исправить ошибку AttributeError: объект str не имеет атрибута decode, используйте метод decode() для объекта «bytes», а не для объекта «string».
|
1 2 3 |
str = b"argentina" print(str.decode()) |
Выход
|
1 |
argentina |
И мы решили эту ошибку атрибута, преобразовав строку в байтовый объект, а затем применив метод decode() к байтовому объекту, который не выдает никаких ошибок, поскольку байтовый объект имеет метод decode().
Декодирование преобразует объект байтов в строку, а кодирование преобразует строку в объект байтов.
Способ 2: преобразование строки в байты
Используйте метод encode() для преобразования строки в объект bytes, а затем используйте метод decode() для объекта bytes, чтобы декодировать ее и вернуть строку.
Метод string encode() является противоположностью метода bytes decode() и возвращает байтовое представление строки Unicode, закодированной в запрошенной кодировке.
|
1 2 3 4 5 |
str = "argentina" encoded = str.encode() print(encoded) |
Выход
|
1 |
b'argentina' |
И теперь у нас есть объект bytes с методом decode(), который мы можем использовать для преобразования объекта bytes в строку.
|
1 2 3 4 5 6 7 |
str = "argentina" encoded = str.encode() decoded = encoded.decode() print(decoded) |
Выход
|
1 |
argentina |
