20180912-3 词频统计

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

代码参见https://e.coding.net/wangzw877/wzw.git

 

功能1 小文件输入。 为表明程序能跑,结果真实而不是迫害老五,请他亲自键盘在控制台下输入命令

  重点难点:

  这一部分的重点主要是对字符的分割和通过列表进行存储,同时需要注意的是replace函数的使用,把文件中的特殊字符替换成空格,从而方便字符统计。

统计字符即对列表元素进行统计,期间需要sort函数进行排序。

  对python使用的生疏是我在转换exe文件时花费大量时间,在安装pip时,更新版本总是失败,最后在网上查找得以解决。

  部分代码如下:

def getText(name):
        #对字符进行分割
    txt = open(name, "r",encoding = 'utf-8').read()
    txt = txt.lower()
    for ch in '\'!"#$%&()*+,./:;<=>?@[\\]^_‘{|}~':
        txt = txt.replace(ch, " ")   
    return txt
def p_count(words,nn=5):
        #统计字符个数
    counts = {}
    for word in txt:            
        counts[word] = counts.get(word,0) + 1
    items = list(counts.items())
    items.sort(key=lambda x:x[1], reverse=True) 
    for i in range(nn):
        word, count = items[i]
        print ("{0:<9}{1:>5}".format(word, count))
if com_list[1] == '-s': 
            txt_name =com_list[-1]
            if '.txt' not in txt_name:
                txt_name += '.txt'
            txt_name = os.path.dirname(os.path.realpath(__file__)) + '\\' + txt_name  # 加绝对路径
            txt = getText(txt_name).split()

 

 运行结果如下:

 

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

  这部分难点是对文件路径的编写,以及如何通过控制台输入的“-s”等符号控制各个功能的实现。最后还是通过借鉴别人的代码经验而勉强实现。

  部分代码如下:

com_list = com.split()

    if com_list[0] == 'wf':

        if com_list[1] == '-s': 
            txt_name =com_list[-1]
            if '.txt' not in txt_name:
                txt_name += '.txt'
            txt_name = os.path.dirname(os.path.realpath(__file__)) + '\\' + txt_name
            txt = getText(txt_name).split()
            if len(txt) > 15:
                print('total', len(txt), '\n')
            else:
                print('total', len(set(txt)), '\n')
            p_count(txt, min(10, len(set(txt))))

 

 运行结果如下:

 

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

  只完成了对文件夹的文件名的输出,没有做到对文件的字符统计。能读取文件名说明路径没有问题,分析具体原因应该是没有对统计函数调用的时候出现问题。

对os模块和sys功能仍有许多不理解的地方,最后未能学会使用。

  部分代码如下;

elif com_list[0] == 'dir':
        if Path(com_list[1]).is_dir():
            filenames = os.listdir(com_list[1])
            for filename in filenames:
                print(filename[:-4])

  运行结果如下:

 

 功能4 从控制台读入英文单篇作品

  查阅了很多资料,还是对重定向理解仍然模糊。也试着对尝试了多次程序实验,最终仍未成功。

PSP:

功能

计划时间

实际时间

时间差

原因

功能一

150min

210min

60min

对python不熟悉,文件读取路径编写出错

功能二

120min

100min

20min

在功能一的基础上进度快了些

功能三

180min

200min

20min

查阅资料,小部分完成

功能四

120min

155min

35min

对重定向不理解,未完成

测试

60min

70min

10min

安装pip,转换exe文件

总结:这次作业对我的刺激很大,花费了大量时间仍然毫无进展,使我认识到自己动手能力太差,感觉是自己的学习方法或是学习方向出了问题,下一步希望自己找到突破口继续努力吧.

posted @ 2019-09-18 15:37  wzw822  阅读(217)  评论(2编辑  收藏  举报