• 出现这个问题可能是两个原因造成的: 1、Python2和Python3在字符串编码上的区别。 2、Python 3.4: str : AttributeError: ‘str’ object has no attribute ‘ decode

在这里插入图片描述

解决方法

  • 原因一的解决方法:print (‘张俊’.encode(‘utf-8’). decode(‘utf-8’) ) #必须将字节字符串解码后才能打印出来
  • 原因二的解决方法:各种编码方式尝试解决:utf-8,gbk,ISO-8859-1,gb2312
  • 原因一才是主要原因,主要解决方法。

img

  • 报错信息:
    • AttributeError: ‘str’ object has no attribute ‘decode’
    • 一般是因为str的类型本身不是bytes,所以不能解码
  • 两个概念:
    • 普通str:可理解的语义
    • 字节流str(bytes)(0101010101,可视化显示)
  • 两个语法
    • Encode: 把普通字符串 转为 机器可识别的bytes
    • Decode: 把bytes转为字符串

  • 两个差异
    • Python3的str 默认是str,所以不能decode,只能先encode转为bytes,再decode
    • python2的str 默认是bytes,所以能decode

  • 一个结论
    • 所以str.decode 本质是bytes类型的str的decode
    • python3经常出现 AttributeError: ‘str’ object has no attribute ‘decode’

非要这样玩,只能先encode转为bytes,再decode 强制转换忽略错误: bytes.decode(‘’utf-8‘’, ‘’ignore‘’)

记忆小技巧 编码就是encode,把你认识的转为,机器人认识的(srt—bytes) 解码decode,就是吧一堆机器认识的,解释为人能读懂的(bytes—str)

原文链接:(61条消息) AttributeError: ‘str‘ object has no attribute ‘decode‘解决方法_柠 檬没我萌的博客-CSDN博客