Python3 ‘str‘ object has no attribute ‘decode‘. Did you mean: ‘encode‘?

简介: Python3 ‘str‘ object has no attribute ‘decode‘. Did you mean: ‘encode‘?
  • AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'?
    原因:一般是因为 str 的类型本身不是 bytes,所以不能解码。
  • 这是由于 py2py3 字符串 编码上的区别 导致的。
# 这是 py2 的写法
name = "中国"
name_utf8 = name.decode('utf-8')
print(name, name_utf8)
# 输出:中国 中国
# 这是 py3 的写法
name = "中国"
name_bytes = name.encode('utf-8')
name_utf8 = name_bytes.decode('utf-8')
print(name, name_bytes, name_utf8)
# 输出:中国 b'\xe4\xb8\xad\xe5\x9b\xbd' 中国
# 不填使用默认编码格式
name = "中国"
name_bytes = name.encode()
name_utf8 = name_bytes.decode()
print(name, name_bytes, name_utf8)
## 概念:
1、普通 str:可理解的语义。
2、字节流 str(bytes):0101010101,字节类型其实就是 2 进制格式,
   不过为了易于理解和计算,通常用 16 进制来表示,
   也就是 b'\xe4\xb8\...,b 开头代表是 bytes 类型。
## 语法
1、Encode(编码):把普通字符串 转为 机器可识别的 bytes。
2、Decode(解码):把bytes转为字符串。
## 语法记忆小技巧
1、编码 encode,就是把你认识的转为机器认识的。
2、解码 decode,就是把机器认识的解释为人能读懂的。
## 差异
1、py3 的 str 默认不是 bytes,所以不能 decode,只能先 encode 转为 bytes,再 decode。
2、py2 的 str 默认是 bytes,所以能 decode。
## 结论
所以 str.decode 本质是 bytes 类型的 str 的 decode
py3 经常出现 AttributeError: ‘str’ object has no attribute ‘decode’


相关文章
|
3月前
|
C++ Python
Python Tricks--- Object Comparisons:“is” vs “==”
Python Tricks--- Object Comparisons:“is” vs “==”
24 1
|
5月前
|
TensorFlow 算法框架/工具 Python
【Tensorflow 2】解决'Tensor' object has no attribute 'numpy'
解决'Tensor' object has no attribute 'numpy'
111 3
|
5月前
|
数据处理 Python
【Python】解决tqdm ‘module‘ object is not callable
在使用tqdm库时遇到的“'module' object is not callable”错误,并给出了正确的导入方式以及一些使用tqdm的常见示例。
153 1
|
5月前
|
JSON 数据格式 Python
【python】解决json.dump(字典)时报错Object of type ‘float32‘ is not JSON serializable
在使用json.dump时遇到的“Object of type ‘float32’ is not JSON serializable”错误的方法,通过自定义一个JSON编码器类来处理NumPy类型的数据。
241 1
|
6月前
|
并行计算 Serverless API
函数计算操作报错合集之出现 "AttributeError: 'NoneType' object has no attribute 'pop'" 错误,是什么原因
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
196 1
|
5月前
|
API C++ Python
【Azure 应用服务】Python fastapi Function在Azure中遇见AttributeError异常(AttributeError: 'AsgiMiddleware' object has no attribute 'handle_async')
【Azure 应用服务】Python fastapi Function在Azure中遇见AttributeError异常(AttributeError: 'AsgiMiddleware' object has no attribute 'handle_async')
|
5月前
|
TensorFlow API 算法框架/工具
【Tensorflow+keras】解决使用model.load_weights时报错 ‘str‘ object has no attribute ‘decode‘
python 3.6,Tensorflow 2.0,在使用Tensorflow 的keras API,加载权重模型时,报错’str’ object has no attribute ‘decode’
81 0
|
6月前
|
编解码 程序员 开发者
【Python】已解决:UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xa1 in position 0: invalid start by
【Python】已解决:UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xa1 in position 0: invalid start by
6189 0
|
6月前
|
编解码 开发者 Python
【Python】已解决:UnicodeEncodeError: ‘utf-8’ codec can’t encode characters in position 42-43: surrogates
【Python】已解决:UnicodeEncodeError: ‘utf-8’ codec can’t encode characters in position 42-43: surrogates
694 0
|
6月前
|
Python
【Python】已解决:(Python xlwt写入Excel报错)AttributeError: ‘function’ object has no attribute ‘font’
【Python】已解决:(Python xlwt写入Excel报错)AttributeError: ‘function’ object has no attribute ‘font’
148 0