python - 字符串连接操作中的属性错误和键错误
问题描述
有一个函数如下
# Transform a list of word ids into a caption.
def ids2caption(self, caption_ids):
id2word = self.vocabulary['id2word']
return string.join([id2word[w] for w in caption_ids], " ")
这将导致以下错误消息
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-22-246a65714ebe> in <module>
69 print('imgId', imgId)
70 print('caption', caption.tolist())
---> 71 print('captionString', trainData.ids2caption(caption))
<ipython-input-22-246a65714ebe> in ids2caption(self, caption_ids)
45 def ids2caption(self, caption_ids):
46 id2word = self.vocabulary['id2word']
---> 47 return string.join([id2word[w] for w in caption_ids], " ")
AttributeError: module 'string' has no attribute 'join'
我将其实现更改为以下内容,并且收到了一些其他错误消息。
# Transform a list of word ids into a caption.
def ids2caption(self, caption_ids):
id2word = self.vocabulary['id2word']
return "".join([id2word[w] for w in caption_ids])
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-23-0f32ccd7d847> in <module>
69 print('imgId', imgId)
70 print('caption', caption.tolist())
---> 71 print('captionString', trainData.ids2caption(caption))
<ipython-input-23-0f32ccd7d847> in ids2caption(self, caption_ids)
46 id2word = self.vocabulary['id2word']
47 #return string.join([id2word[w] for w in caption_ids], " ")
---> 48 return "".join([id2word[w] for w in caption_ids])
49
50 # Return imgId, and a random caption for that image.
<ipython-input-23-0f32ccd7d847> in <listcomp>(.0)
46 id2word = self.vocabulary['id2word']
47 #return string.join([id2word[w] for w in caption_ids], " ")
---> 48 return "".join([id2word[w] for w in caption_ids])
49
50 # Return imgId, and a random caption for that image.
KeyError: tensor(5001)
解决方案
w
如果你的代码不是一个 key in ,你的代码不会尝试不失败id2word
,所以当它失败时不应该有太多的惊喜。你可以尝试改变
return "".join([id2word[w] for w in caption_ids])
至
return "".join([id2word.get(w,”UNKNOWN WORD”) for w in caption_ids])
甚至:
return "".join([id2word.get(w,w) for w in caption_ids])
推荐阅读
- python - 在 python 中使用 mysql.connector 将表情符号插入数据库的问题
- wpf - 使用 .Net 标准项目在 WPF 应用程序中执行方法
- javascript - Javascript通过正则表达式规则删除所有字符
- laravel - 在 cloudcreativiy/json-api 中添加查询 - laravel
- laravel - Laravel - 试图获取非对象的属性文本
- ios - 如何将 AVAsset 转换为 CMSampleBuffer 帧?
- javascript - 如何在条形图js的标题内添加切换
- python - Python 3 中的 ModuleNotFound seaborn
- python-3.x - 我想从列表中的函数中偷运一个整数而不更改其元素或增加内存使用量
- mysql - Sequelize 如何在查询中格式化 sequelize.literal('CURRENT_TIMESTAMP')?