1

我正在尝试加载两组 CSV 文件并对两者进行一些计算,例如每组的差异,平均绝对误差set1 - set2除外。

我正在尝试像这样加载两组:

import glob    
for a, b in (glob.glob("*a.csv"), glob.glob("*b.csv")):

我得到了错误:

ValueError: too many values to unpack
4

1 回答 1

6

问题

您之所以得到 ,是ValueError因为您尝试为元组分配的项目多于您提供的目标变量的数量。for 循环元组解包语法将遍历您的元组中的每个列表,并尝试将元组中的每个值分配给您的目标(ab)。例如,这将起作用:

for a,b in (['0a.csv', '1a.csv'], ['0b.csv', '1b.csv']):
    print a,b

它将每个列表的第一个值分配给a,将第二个值分配给b。上面的代码打印:

0a,csv 1a.csv
0b.csv 1b.csv

因此,您得到了,ValueError因为您的至少一个glob.glob调用的结果是一个比两个元素长的列表。

一个办法

根据您要执行的操作,我认为您想使用zip.

import glob

for a,b in zip(glob.glob("*a.csv"), glob.glob("*b.csv")):
    # whatever

这将获取与您提供的模式匹配的文件对并将它们分配给ab。例如,如果您有文件0a.csv, 1a.csv, 2a.csv, 0b.csv, 1b.csv, 和2b.csv

for a,b in zip(glob.glob("*a.csv"), glob.glob("*b.csv")):
    print a, b

结果是

0a.csv 0b.csv
1a.csv 1b.csv
2a.csv 2b.csv
于 2012-09-25T15:44:02.227 回答