Python ValueError: too many values to unpack For Loop

Python ValueError: too many values to unpack For Loop

嗨,我有一个 DF,我想发送给 HTML table。例如,这是我唯一的一行:

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")

我收到 ValueError:要解压的值太多(预期为 6)

当我在第二个 for 循环中有 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 item in tup:
    print(item) 

item in tuple 的每次迭代都会为您提供元组的每个内容。每个项目将只有一个值(第一次迭代将是您的文件名,第二次将是很多,等等)。您不能从文件名中解压 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 循环。