我们唯一需要做的是利用Python的sys.stdin读取输入数据,并把我们的输出传送给sys.stdout。Hadoop流将会帮助我们处理别的任何事情。
这并不是什么困难的题目吧?属于很基础的内容了。
不考虑性能与功能健壮的情况下,伪代码如下:
以r模式打开文件:逐行读出:
行计数加1
以空格拆分行为一个列表,
词计数增加列表长度
字符数增加列表所有元素的长度之和
输出结果
在python的安装目录下有文件LICENSE.txt,以它为例:
linecount = wordcount = charcount = 0with open('LICENSE.txt', 'r') as f:
for line in f:
linecount += 1
words = line.split(' ')
wordcount += len(words)
charcount += sum(len(_) for _ in words)
print(linecount, wordcount, charcount)
运行输出结果:
605 5258 25385
至于更进一步,就需要考虑一些意外的情况了:
是否有chr(9)替代了某些空格?它会影响对line的拆分,进而影响单词数与字符数的统计并培亮;
是否有连续的空格,它的影响同上;
除空格外,是否还有不计入字符数据的字符(比如标点符号之类的)?
要处理这些问题,一般都需要在将一行拆分为words的过程中或紧随其后去处理。如有必要,“line.split(' '绝宽)”可以替换为一个自行编写的函中州数如splitbyword(),并在其中实现上述相关的功能。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)