覆盖文件Python中字段的值:字符串对象错误

Posted

技术标签:

【中文标题】覆盖文件Python中字段的值:字符串对象错误【英文标题】:Overwriting value of field in file Python: String Object error 【发布时间】:2017-06-12 09:42:43 【问题描述】:

为了澄清和简化:我有以下文件

    0,Genre, Title, Rating, Likes
    1,Sci-Fi,Out of the Silent Planet, PG, 0
    2,Sci-Fi,Solaris, PG,0

下面的代码旨在增加特定电影的点赞数。我已经设法提取了相应的行(基于前一个函数的参数),但我现在需要知道如何操作列表中的值并将其添加到其中。

所以在该行(已读入列表)中,当前点赞数如下,当前值为“0”

currentlikes=[row[4]]

以下,会将列表中的值更改为“2”

currentrow[0][4]=2

但是,我希望将存储在相应字段(在该行中)中的值更改为 +1。我需要知道如何重写此代码以使其工作

currentrow[0][4]=[row[4]]+1

我也试过了:

currentrow[0][4]=currentlikes+1

错误信息是:

    currentrow[0][4]=currentlikes+1
    TypeError: can only concatenate list (not "int") to list

【问题讨论】:

没有建设性 - 我不知道如何使用这个字符串,这就是我问这个问题的原因。此外,为了记录,likedfilms[x][3] = like 工作正常(它分配数字)。然而,我想知道的是如何让它转换为整数并允许我增加。即当前喜欢+1 好吧,既然你已经完全改变了问题,我之前的评论确实不再适用。但作为说明:之前的错误信息非常清楚。 【参考方案1】:

字符串在python中是不可变的,试试看

likedfilms[x]=likedfilms[x][:2]+str(like)+likedfilms[x][3:]

likedfilms[x] = "%s%d%s" % (likedfilms[x][:2], like, likedfilms[x][3:])

顺便说一句,在几行之后声明它之前使用 likefilms 真的很奇怪 :)

^^ [注意:我把这条评论往下走]*

【讨论】:

我只是想看看这是否有效。你能澄清一下我的声明是什么意思吗?据我所见,likefilms 在代码中声明(作为列表):likefilms=[row[2]] ......然后在下一行中使用它: print("You have like:" , likefilms) ?你是什么意思它在被宣布之前被使用......?提前致谢 您能解释一下代码中的逻辑吗?它在做什么..我无法跟随。此外,它会产生此错误:likefilms[x]=likedfilms[x][:2]+like+likedfilms[x][3:] TypeError: Can't convert 'int' object to str implicitly 好的,在进一步阅读之后,我发现您并没有真正这样做。格式让我感到困惑,让我觉得你使用的是前一个循环迭代中的值。 “继续!” :) 尝试 currentlikes=int(row[4]) 得到一个 int 你为什么在里面放了额外的[]?你把它变成了一个列表。注意我上面的回答根本没有括号。

以上是关于覆盖文件Python中字段的值:字符串对象错误的主要内容,如果未能解决你的问题,请参考以下文章

如何覆盖 Grails 中的默认错误消息?

Excel 2010 - 具有覆盖字段的值小计

覆盖 dateCreated 以在 Grails 中进行测试

Dart 错误:不是有效的覆盖,不要覆盖字段

Python for 循环中使用append()添加可变元素,前面的值被覆盖,循环中内存应用地址不变

Python27期:错误宝典