【问题标题】:Overwriting value of field in file Python: String Object error覆盖文件Python中字段的值:字符串对象错误
【发布时间】: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
  • 好吧,既然你已经完全改变了问题,我之前的评论确实不再适用。但作为说明:之前的错误信息非常清楚。

标签: python string overwrite


【解决方案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
  • 你为什么在里面放了额外的[]?你把它变成了一个列表。注意我上面的回答根本没有括号。
猜你喜欢
  • 2021-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-03
  • 2015-05-01
相关资源
最近更新 更多