徐丽君 20190912-3 词频统计

此作业的要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/6583

我的代码源地址:https://e.coding.net/xulijun/xulijun11.git

词频统计 SPEC 20180918

1.功能1 

小文件输入。通过程序统计文件中单词的总量total,并统计各个单词出现的频率,total一项中相同的单词不重复计数数,出现两次的单词记为1次。

1.1 重点难点:

(1)题目要求用控制台输入命令行参数,python代码不能直接在控制台运行,所以我查阅资料,了解到python的命令行参数是用sys.argv[]获取的。

(2)统计单词词频我使用了re.findall()方法通过正则表达式生成列表,然后用collections.counter()统计单词数量。

代码如下

 f = open(path, encoding='utf-8')
    words = re.findall(r'[a-z0-9^-]+', f.read().lower())

def count(words):
    collect = collections.Counter(words)
    num = 0
    for i in collect:
        num += 1
    print('total %d words\n' % num)
    result = collect.most_common(10)
    for j in result:
        print('%-8s%5d' % (j[0], j[1]))

 

 

1.2 效果展示

2.功能2

支持命令行输入英文作品的文件名,请老五亲自录入。

2.1 重点难点

功能二要求输入的文件名不带txt后缀,我通过查阅资料,利用参数sys.argv[1]是否等于‘-s’来判断执行功能一还是功能二。

代码如下

def main(argv):
    if sys.argv[1] == '-s':
        if (len(sys.argv) == 3):
            doCount(sys.argv[2])
        else:
            redicertText = sys.stdin.read()
            doCountByPurText(redicertText)
    elif os.path.isdir(sys.argv[1]):
        fileFindAndCount(sys.argv[1])
    else:
        doCount(sys.argv[1])

def doCount(accept):
    s = '.txt'
    if s in accept:
        path = accept
    else:
        path = accept + '.txt'
    f = open(path, encoding='utf-8')
    words = re.findall(r'[a-z0-9^-]+', f.read().lower())
    count(words)

 

 

2.2 效果展示

3.功能3

支持命令行输入存储有英文作品文件的目录名,批量统计。

3.1 重点难点

如何判断输入的路径是一个文件夹,可以用os.path.isdir()方法,用os.listdir()方法遍历文件夹。

代码如下:

def fileFindAndCount(path1):
    files = os.listdir(path1)
    for file in files:
        if os.path.isfile(file):
           doSomeFileCount(file)

 

 

3.2 效果展示

4.功能4

从控制台读入英文单篇作品,这不是为了打脸老五,而是为了向你女朋
友炫酷,表明你能提供更适合嵌入脚本中的作品(或者如她所说,不过是更灵活
的接口)。如果读不懂需求,请教师兄师姐,或者 bing: linux 重定向,尽管
这个功能在windows下也有,搜索关键词中加入linux有利于迅速找到。

4.1 重点难点

百度和请教了学长重定向的内容,了解了基本概念,但未能编译成功,我会努力把这个功能编写完善。

PSP表格

总结:刚开始第一个功能,由于查阅资料,时间较长由于能力和时间有限第四个功能没有编译成功,即使作业截止我也打算努力把他写出来。

 

posted @ 2019-09-18 11:49  徐丽君2019102951  阅读(260)  评论(0编辑  收藏  举报