【已解决】AttributeError: ‘str‘ object has no attribute ‘decode‘

问题描述 

        接着上文我们继续看,会发现又出现了新的问题。

         再继续往下面执行,发现又报错了

        具体报错内容如下:

Traceback (most recent call last):
  File "/media/visionx/monica/newproject/chineseocr/app.py", line 46, in <module>
    from text.keras_detect import  text_detect
  File "/media/visionx/monica/newproject/chineseocr/text/keras_detect.py", line 20, in <module>
    textModel.load_weights(kerasTextModel)
  File "/home/visionx/anaconda3/envs/chineseocr/lib/python3.6/site-packages/tensorflow/python/keras/_impl/keras/engine/network.py", line 1190, in load_weights
    saving.load_weights_from_hdf5_group(f, self.layers)
  File "/home/visionx/anaconda3/envs/chineseocr/lib/python3.6/site-packages/tensorflow/python/keras/_impl/keras/engine/saving.py", line 671, in load_weights_from_hdf5_group
    original_keras_version = f.attrs['keras_version'].decode('utf8')
AttributeError: 'str' object has no attribute 'decode' 

原因分析及解决 

        可以看出来,是没有这个decode属性,我们找到出错的地方

        报错显示没这个属性,但是为什么会出现这个问题呢?代码又不是我写的,环境也是按照他的配置的,还是会报错 :

出现这个问题可能是两个原因造成的:
1、Python2和Python3在字符串编码上的区别。
2、Python 3.4: str : AttributeError: ‘str’ object has no attribute 'decode
原因一的解决方法:
print (‘张俊’.encode(‘utf-8’). decode(‘utf-8’) ) #必须将字节字符串解码后才能打印出来
参考链接:https://www.cnblogs.com/geekard/archive/2012/10/04/python-string-endec.html
原因二的解决方法:各种编码方式尝试解决:utf-8,gbk,ISO-8859-1,gb2312
原因一才是主要原因,主要解决方法。

        这个时候还是不太确定是什么原因的,但有一点,在我们之前学习python的时候有一节编码和解码 【python学习过程--day9】python中的字符集、编码和解码、运算符-CSDN博客

        这个时候我们就明白了,在前面应该有一个编码的操作,但我们就需要全部看代码了,这样会比较麻烦,因为有的时候当我们不给其编码,也可以按照需要解码成一定的格式。原因很简单啊,ide有默认的编码格式! 

        在此,给出我的解决办法:将上面的代码改为下面的

  if 'keras_version' in f.attrs:
    original_keras_version = f.attrs['keras_version'].decode('utf8')
  else:
    original_keras_version = '1'
  if 'backend' in f.attrs:
    original_backend = f.attrs['backend'].decode('utf8')
  else:
    original_backend = None
将上面的代码改为下面的:  
  if 'keras_version' in f.attrs:
    original_keras_version = f.attrs['keras_version']
  else:
    original_keras_version = '1'
  if 'backend' in f.attrs:
    original_backend = f.attrs['backend']
  else:
    original_backend = None

        这个时候再运行就可以了!看个效果图:

相关链接 

AttributeError: ‘str‘ object has no attribute ‘decode‘解决方法_attributeerror: 'str' object has no attribute 'dec-CSDN博客文章浏览阅读10w+次,点赞103次,收藏180次。出现这个问题可能是两个原因造成的:1、Python2和Python3在字符串编码上的区别。2、Python 3.4: str : AttributeError: ‘str’ object has no attribute 'decode原因一的解决方法:print (‘张俊’.encode(‘utf-8’). decode(‘utf-8’) ) #必须将字节字符串解码后才能打印出来参考链接:https://www.cnblogs.com/geekard/archive/2012/10/04/py_attributeerror: 'str' object has no attribute 'decodehttps://blog.csdn.net/qq_43192819/article/details/108981008【python学习过程--day9】python中的字符集、编码和解码、运算符-CSDN博客文章浏览阅读993次,点赞18次,收藏16次。当我们编译运行一个py文件(test.py)的时候,Python 编译器首先会对文件 test.py 进行读取,然后默认对数据进行 UTF-8 的解码,然后编译运行,程序跑了起来。我们知道,数据的解码和编码都是成对的,且需要采取相同的编码方式,否则解码的数据就会和原数据不一样…在计算机中,文本数据存储和传输时,需要将字符编码为字节序列,通常使用的编码方式有 UTF-8、UTF-16、ASCII 等。文件操作是 Python 编程中常用的功能之一,可以用于处理各种类型的文件,例如文本文件、二进制文件等。https://blog.csdn.net/BetrayFree/article/details/137386118?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22137386118%22%2C%22source%22%3A%22BetrayFree%22%7D

完结撒花

        我就是无法无天的小畜生,谁都敢骂的小畜生!

"AttributeError: 'str' object has no attribute 'decode'" 错误通常是因为字符串对象(str)没有 'decode' 属性,这是因为字符串是不可变对象,不支持解码操作。 如果你想对字符串进行解码操作,你需要使用字节字符串(bytes)对象。另外,"AttributeError: 'URLError' object has no attribute 'code'" 错误指的是 'URLError' 对象没有 'code' 属性。这可能是因为你使用了错误的属性名或者对象类型。 对于这种错误,你可以检查代码中是否正确引用了相应的属性名,并确保你使用了正确的对象类型。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [python--排错--AttributeError: 'str' object has no attribute 'decode',关于python3的字符串](https://blog.csdn.net/weixin_41357300/article/details/104846780)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [详解Python中的编码问题(encoding与decodestr与bytes)](https://download.csdn.net/download/weixin_38677227/13706348)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值