mapreducepython-要解包的值太多

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

在本教程中,我尝试将两个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表示它是来自左矩阵还是右矩阵。这是我的密码:

n = 3; 
l = 3;

for line in sys.stdin:
     if 'L' in line:
       (i, k, v) = re.split("[ \t]+", line.strip());
     for j in range(1, l + 1):
           print("%s %s %d\t%s L" % (i, k, j, v));
else:
    (k, j, v) = re.split("[ \t]+", line.strip());
for i in range(1, n + 1): 
           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个变量。

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

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

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

相关问题