mapreducepython-要解包的值太多

gopyfrb3  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(428)

在本教程中,我尝试将两个Map器合并为一个-https://www.knowbigdata.com/blog/multiplying-matrix-using-mapreduce. 给定的文本文件输入具有:
1 1 6 L 1 2 5 L 1 5 8 L 2 3 9 R ..
其中l和r表示它是来自左矩阵还是右矩阵。这是我的密码:

  1. n = 3;
  2. l = 3;
  3. for line in sys.stdin:
  4. if 'L' in line:
  5. (i, k, v) = re.split("[ \t]+", line.strip());
  6. for j in range(1, l + 1):
  7. print("%s %s %d\t%s L" % (i, k, j, v));
  8. else:
  9. (k, j, v) = re.split("[ \t]+", line.strip());
  10. for i in range(1, n + 1):
  11. print("%d %s %s\t%s R" % (i, k, j, v));

我得到这个错误: Value error: too many values to unpack (expected 3) 我是python和mapreduce的新手。我该怎么纠正这个问题?
谢谢您。

xiozqbni

xiozqbni1#

问题是,re.split函数将为您的输入返回4个值的列表。您正在尝试将这4个值解包并将它们赋给3个变量。

  1. >>> line = "1 1 6 L\n"
  2. >>> re.split("[ \t]+", line.strip())
  3. ['1', '1', '6', 'L']

如果要放弃最后一个值,则在python中通常使用下划线作为palceholder变量:

  1. i, j, k, _ = re.split("[ \t]+", line.strip())

相关问题