Python ValueError:太多值无法解压缩For Loop

问题描述

嗨,我有一个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")

我收到ValueError:太多值无法解包(预期为6)

当第二个for循环中有6个项目时怎么办?

解决方法

那是因为您正在遍历元组。

for item in tup:
    print(item) 

元组中项目的每次迭代都会为您提供元组的每个内容。每个项目将只是一个值(第一个迭代将是您的文件名,第二个将是很多,依此类推)。您无法从文件名中解压缩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 filename,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")
,

因此,基本上,您只需要打开元组的包装即可。我认为您的操作有点太复杂了,我不确定为什么没有人提出建议,但是最简单的方法是:

var contextSelection = mybook.renderer.render.window.getSelection();

 contextSelection.modify('extend','backward','sentence');
 var context = contextSelection.toString();
      
contextSelection.modify('extend','forward','sentence');
var context = context + contextSelection.toString();
console.log("inital context"+context);

真的不需要第二次for tup in mdf: filename,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") 循环。