PythonValueError:太多值无法为循环解包

2024-09-27 00:16:21 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我有一个DF我正试图发送到HTML表。对于示例,这里是我仅有的一行:

mdf = [('2007291533_946908J.70J.908J-06.FPP.FMGN512.rSBDl5kn9o4R4wP7dtmissbinallerrors.log', 'K946', 'nabcs', '027', 'ERROR: 2007291533_946908J.70J.908J-06.FPP.FMGN512.rSBDl5kn9o4R4wP7dtmissbinallerrors.loghas bad formatting because it has No product offset', 'C:\\Users\\error_dir\\2007291533_946908J.70J.908J-06.FPP.FMGN512.rSBDl5kn9o4R4wP7dtmissbinallerrors.log') ]

如您所见,元组中有六个项

但当我试图用这种方式打开它时:

for tup in mdf:
        for filename, lot, lot_owner, holder, error, location in tup:
            hlist.append(f"\n<tr><td>{filename}</td><td>{lot}</td><td>{lot_owner}</td><td>{holder}</td><td>{error}</td><td>{location}</td></tr>\n")

I get ValueError:要解压缩的值太多(预期为6个)

当我在第二个for循环中有6项时,这怎么可能呢


Tags: inlogforlocationerrorfilenametdmdf
3条回答

这是因为您正在元组中循环

for item in tup:
    print(item) 

元组中项的每次迭代都将给出元组的每个内容。每个项目将只有一个值(第一次迭代将是您的文件名,第二次迭代将是lot,等等)。无法从文件名中解压缩6个值

试一试

for filename, lot, lot_owner, holder, error, location in mdf:
        hlist.append(f"\n<tr><td>{filename}</td><td>{lot}</td><td>{lot_owner}</td><td>{holder}</td><td>{error}</td><td>{location}</td></tr>\n")

所以,基本上,您只需要解包元组。我觉得你说的有点太复杂了,我不知道为什么还没有人提出,但最简单的方法是:

for tup in mdf:
    filename, lot, lot_owner, holder, error, location = tup
    hlist.append(f"\n<tr><td>{filename}</td><td>{lot}</td><td>{lot_owner}</td><td>{holder}</td><td>{error}</td><td>{location}</td></tr>\n")

实际上不需要第二个for循环

你有一个元组列表,我猜你是在错误的层次上解包的

这不是你需要的吗

for filename, lot, lot_owner, holder, error, location in mdf:
    hlist.append(f"\n<tr><td>{filename}</td><td>{lot}</td><td>{lot_owner}</td><td>{holder}</td><td>{error}</td><td>{location}</td></tr>\n")

相关问题 更多 >

    热门问题