MapReduce Python,似乎无法将标准通过管道传输到文本文件

MapReduce Python, Can't seem to pipe criteria to text file

首先,我是 MapReduce 的新手(实际上就在这周),并且将其作为我目前正在上的课程的一部分进行学习,所以如果我犯了基本错误,请原谅我。

我尝试寻找问题的答案,但我找到了任何相关的东西。

我有一个文本文件,其中的数据很简单,例如:

Reg1, Yes
Reg2, No
Reg3, Yes
Reg4, Yes
Reg5, Yes
Reg6, Yes
Reg7, Yes
Reg8, No
Reg9, Yes
Reg10, Yes
Reg11, Yes
Reg12, Yes
Reg13, Yes
Reg14, No
Reg15, Yes

我想做的第一件事是计算是和否 - 这部分工作正常但使用第二个模型将 'reg' 单词通过管道传输到文本文件,如果它是 'No'.我在某处读到,在这种情况下,看行比看字要好,这是有道理的。

下面是我试图获得一个映射器的尝试:

import sys

for line in sys.stdin:

line = line.strip()

lines = line.split()

for line in lines:
    if 'Yes' in line:
        sys.stdout.write('%s\t%s\n' % (line,1))

    else:
        sys.stderr.write('%s\t%s\n' % (line,1))

    print('%s\t%s' % (line, 1))

但结果输出是:

Reg1,   1
Reg2,   1
No  1
Reg3,   1
Reg4,   1
Reg5,   1
Reg6,   1
Reg7,   1
Reg8,   1
No  1
Reg9,   1
Reg10,  1
Reg11,  1
Reg12,  1
Reg13,  1
Reg14,  1
No  1
Reg15,  1

而我只希望输出为:

Reg2, No
Reg8, No
Reg14, No

谁能指出我哪里出错了?这部分工作仅用于理论目的,这就是我使用 Python 的原因(加上这是导师在其中演示的内容)

提前致谢。

无需将行拆分为单词。 in 运算符可以识别字符串中的子字符串。

然后你也不需要做那么多打印,最终你的代码将是

import sys

for line in sys.stdin:
    line = line.strip()
    if 'Yes' in line:
        # print(line) # we don't want to print the Yes lines
        pass
        # but if we want to leave the IF unchanged, then a pass instruction needs to fill it
    else:
        print(line)
        # if you want results to be pipe-able, comment line above, uncomment line below
        #sys.stdout.write(line)