错误:要解压缩的值太多(Python)

时间:2014-08-06 01:40:51

标签: python graph max mean

我正在使用python 2.7.3

这是我的代码片段:

linematchregex = re.compile('(\d+/\d+ \d+:\d+), (\d+\.\d+)')
.
.
with open(r'temp.txt', 'r') as f:
     f.next()
     t,temp = zip(*[p for line in for p in linematchregex.findall(line)])
     groups = itertools.groupby(f, lambda row row[0].split()[0])
     for date, group in groups:
               group = [(datetime.strptime(dt), value)
                       **for dt, value in group]**
               during_8to5 = {len(value) for value in group
                             if datetime.time(8) <= dt.time() < datetime.time(17)}
      .
      .
      .
      .
      long_title = {'\n Max AMB_TEMP Value: {:.2f} at {}, Min AMB_TEMP Value: {:.2f} at  
      {}, Mean AMB_TEMP Value: {:.2f} at {}')
      ax1.set_title(long_title.format(max(group),min(group),sum(during_8to5)/len(during_8to5))

当我运行模块时,我得到了dt,组中的值&#39;我得到了太多的值来打开包装&#39;

fyi,我的txt文件数据是:21/7/2014 0:00,0.66,29.16 所以我应该把&#39;分裂(&#39;,&#39;)&#39;因为我的数据用逗号分隔? 因为我的时间是h:m格式,只需要8和17就可以了吗?

1 个答案:

答案 0 :(得分:0)

我认为你的价值在&#34; group&#34;可能不是全长相等。请考虑以下简单示例:

>>> a, b = 1, 2, 3
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)

现在,我认为你想要的是:

>>> [ (a, b) for a, b in [[1,2],[3,4], [5,6]] ]
[(1, 2), (3, 4), (5, 6)]

但是会发生什么:

>>> [ (a, b) for a, b in [[1,2], [3,4], [5,6,7]] ]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <listcomp>
ValueError: too many values to unpack (expected 2)

您可以通过以下简单的方式快速仔细检查:

during_8to5 = {len(vals) for vals in group
                             if datetime.time(8) <= dt.time() < datetime.time(17)}

print(during_8to5)

如果结果集不包含单个值,则可以知道问题所在。

编辑:

我可能已经查看了自行,因为你正在使用

for dt, value in group

在2个地点。如果您只使用像pdb这样的调试器,将len的打印向上移动一级,或者如果发生try-except则使用group打印ValueError的长度,该怎么办?并退出程序。