base10的int()的无效文字

时间:2018-12-05 01:20:41

标签: python artificial-intelligence ros

尽我所能解释我的问题,这是我最好的:

我试图在第一步中确认先前创建的数组的某个位置是否为0,并使用字符串替换该0。之后,我想确认该相同位置是否再次为0,如果不是,则将前一个字符串与新的字符串连接起来。

为了更好地理解,我将显示一段代码:

room1=np.array([["chair","table","book","computer","person"],[0,0,0,0,0]])

上面是数组(或矩阵)

if int(room1[1,k])==0:
     room1[1,k]=tipoObjF[1] #tipoObjF[1] being the string I want to replace the 0
else:
     room1[1,k]=room1[1,k]+tipoObjF[1]

在这里,我要像之前提到的那样:检查某个位置是否为0,如果为0,则将其替换为String。否则,只需连接两个字符串即可。

我在运行它时出现以下错误:

ValueError: invalid literal for int() with base10: 'chair1'

我希望我能够正确解释我的问题。 该错误出现在正在使用ROS的项目中,并且chair1是替换0的第一件事,并且应该加入else语句中,从而使其成为Chair1Chair1达到预期的结果。

在此先感谢您愿意提供帮助的人

编辑: 最后,数组应如下所示:

room1=np.array([["chair","table","book","computer","person"],["chair1chair",0,0,0,0]])

1 个答案:

答案 0 :(得分:1)

如果在元素已交换为非整数字符串之后尝试将room[1,k]强制转换为int ,则无法调用int()不再。例如,int("chair1chair")会引发您看到的错误。

由于值可能是intstring,因此您可以先比较以下字符串值:

if str(room[1,k]) == "0": ...

这样做允许str(0) == "0"返回True,但也允许str("hello") == "0"返回False