带有 base10 的 int() 的无效文字

Invalid literal for int() with base10

尽管我很难解释我的问题,但我尽力了:

我试图在第一步中确认先前创建的数组的某个位置是否为 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,如果是,则将其替换为字符串。否则只需加入两个字符串。

当我 运行 它出现以下错误:

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]])

如果您尝试将 room[1,k] 转换为 int 元素已交换为非整数字符串后,您不能调用int()就可以了。例如,int("chair1chair") 会引发您看到的错误。

因为值可能是 intstring,您可以从比较字符串值开始,例如:

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

这样做允许 str(0) == "0" 到 return True 但也 str("hello") == "0" 到 return False.