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)
首先,我是 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)