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
循环。
嗨,我有一个 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
循环。