覆盖文件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中字段的值:字符串对象错误的主要内容,如果未能解决你的问题,请参考以下文章
覆盖 dateCreated 以在 Grails 中进行测试