问题描述
嗨,我有一个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")
循环。