【问题标题】:ValueError : need more than one value to unpackValueError : 需要多个值才能解包
【发布时间】:2016-07-31 14:13:10
【问题描述】:

我正在编写一个测验,在学生完成测验后,在保存分数时,我试图确保将学生的最后三个分数保存到他们的名字中。如果他们之前没有完成过测验,则会在文本文件中为他们写一个新行。

filename = (str(class_number) + 'txt')
with open(filename, 'a') as f:
    f.write(str(name) + " : " + str(score) + '\n')

with open(filename) as f:
    f.seek(0)
    scores = f.readline()
    from collections import deque
    for line in scores:
        name, score = line.rstrip('\n').split(',')
        score= int(score)
        if name not in filename:
            filename[name] = deque(maxlen=3)
        temp_q = filename[name]
        temp_q.append(str(score))
        filename[name] = temp_q

    filehandle = open (filename, 'w')
    for key,values in filename.iteritems():
        filehandle.write(name + ',')
        filehandle.write (','.join(list(values)) + '\n')
    filehandle.close()

这是错误:

name, score = line.rstrip('\n').split(',')
Value error need more than 1 value to unpack

【问题讨论】:

标签: python python-3.x random collections deque


【解决方案1】:

此错误消息表明,您尝试读取的文件中没有 , 字符。

【讨论】:

    【解决方案2】:

    您的line 中没有逗号。因此,在拆分后尝试将其解包为两个变量会失败(因为该行中不存在拆分分隔符)。打印你的行来调试它,看看你的行中实际包含什么。

    【讨论】:

    • 我是否只需删除逗号就可以做到这一点
    • 没有。您正在尝试解压缩 2 个值,但您只能得到 1 个。要获得 2 个值,您需要在行中真正使用某种分隔符。如果您只想要行本身,则使用 1 个变量并完全删除拆分。
    • 很抱歉打扰你,但我不知道分隔符是什么意思
    • 分隔符是您在split 中使用的逗号 (,)。
    猜你喜欢
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 2011-05-29
    相关资源
    最近更新 更多