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

本作业代码https://e.coding.net/fyzs/ruangongcizhuitongji.git

一、重点/难点及相关代码:

  (1)实现每个功能首先要处理的就是文件数据处理问题,本作业使用python编码,使用open方法打开文件,read方法读取文件。

代码:

  f = open(filename, 'r', -1, 'utf-8')text = f.read().lower()

(2)需要进行特殊字符的替换以及进行单词分词才可以进行词频统计的操作。Python中使用正则表达式可以方便的替换所有特殊符号

代码:

    p = re.compile('[-,$()#+&*.]')               #指定特殊字符text = re.sub(p, " ", str).split()           #字符替换

(3)最基本的功能词频统计需要重复单词进行计数。Python中的数据字典也可以方便的实现这一功能。

代码:

 dict = {}                                    #创建字典for str in text:                             #遍历文件内单词if str in dict.keys():                    dict[str] = dict[str] + 1else:dict[str] = 1word_list=sorted(dict.items(), key=lambda x: x[1], reverse=True)

(4)由于题目要求所有功能编写在一个程序里,所以根据命令行的输入来判断相应执行的操作也是重点之一,判断的方法有很多,我选择根据命令行参数argc的长度来判断相应执行的操作。

(5)功能二、功能三和功能四与功能一相比省去了文件后缀的输入,需要将文件名和后缀名相加作为新参数。

代码:

file = argv[-1] + '.txt'

(6)功能三需要输入文件名然后批量处理文件内的文本文件,这里可以使用os命令打开文件获取文件名称到列表。

 os.chdir(folder_name)filename_list = os.listdir()

(7)功能四中用到了Linux重定向,'<'符号在linux重定向中的作用是标准输入,即在键盘键入文件名或者要统计的文本内容,由于之前没有了解过Linux重定向的内容,调试很多遍功能四依然没有能够实现。

二、功能代码及执行效果截图

  1.功能1代码:

    if len(argv) == 2:               try:list = file_read(argv[-1])opts, args = getopt.getopt(argv, "sh", ["ifile", "ofile"])except getopt.GetoptError:print("test.py -i <inputfile> -o <outputfile>")sys.exit(2)for opt, arg in opts:if opt == "-s":num = len(list)print('total',num)print('\n')for word in list:print('{:20s}{:>5d}'.format(word[0], word[1]))

  执行效果截图:

 

2.功能2代码

 file = argv[-1] + '.txt'is_file = os.path.exists(file)if is_file:list = file_read(file)if len(list) <=10:print('total', len(list), 'words')for item in list:print('{:20s}{:>5d}'.format(item[0], item[1]))else:                     print('total', len(list), 'words')print('\n')for i in range(10):print('{:20s}{:>5d}'.format(list[i][0], list[i][1]))

 执行效果截图:

3.功能3代码

        else:if argv[-1] != '-s':folder_name = argv[-1]os.chdir(folder_name)filename_list = os.listdir()for file_name in filename_list:print(file_name[:-4])file_list = [file_name[:-4]]get_words(file_list)print('----\n')

执行效果截图

4.功能4代码

由于之前没有了解过Linux重定向的内容,调试很多遍功能四依然没有能够实现,之后会争取实现这个功能。

三、PSP

 

PSP阶段 预计花费时间(min) 实际花费时间(min) 分析原因
功能1 120 158 功能1功能并不复杂以及python语言的简便性,在实际编程中花费的时间大部分是在打包exe上和命令行参数的使用上,命令行参数真的需要学的透彻一些。
功能2 120 86 由于有前人对题目的需求分析以及功能2大部分是对功能1的复用,实际上需要解决的就是大文件的输入问题所以相比下少花了不少时间。
功能3 120 132 由于对前两个代码功能的整合不尽人意,在整合代码3的时候费了很大心思。
功能4 120 未实现 对Linux重定向理解经验不足,多次调试未能实现。

转载于:https://www.cnblogs.com/Fuyuze/p/11537877.html

付宇泽20190912-3 词频统计相关推荐

  1. 付宇泽20190919-2 功能测试

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/7627 要求1 bug计分.阅读教材第298页,发布bug报告. (第1位发 ...

  2. 付宇泽20190919-5 代码规范,结对要求

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/7630 结对要求,适用于本周所有标注"结对"的作业: 每 ...

  3. 付宇泽四则运算试题生成,结对

    本作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/7631 git链接:https://e.coding.net/kangzh ...

  4. 付宇泽20190919-4 单元测试,结对

    本作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/7629 结对伙伴:康哲 要求1 对每个功能,先给出测试用例,然后再编码功能. ...

  5. 付宇泽20190912-2 命令行

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/6582 1.熟悉 命令行和控制台 请用C语言开发应用程序d.exe,从控制台 ...

  6. 付宇泽20190919-3 效能分析

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/7628 git地址https://fyzs.coding.net/p/Ana ...

  7. 付宇泽20190912-1 每周例行报告

    本作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/6581 一.本周PSP 二.本周进度条 三.累计进度图   累计代码量 累计 ...

  8. 付宇泽20190919-1 每周例行报告

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/7626 一.本周PSP 二.本周进度条 三.累计进度图 累计代码: 累计博文 ...

  9. 付宇泽20190905-1 每周例行报告

    本作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/5521 1.本周PSP 2.进度条 3.累进折线图 (1)代码量 (2)博文 ...

最新文章

  1. python源程序执行的方式是什么执行-python调用可执行文件的方法
  2. iframe vue 前进 后退_vue常见面试题
  3. CORS 请求未能成功_当遇到跨域开发时, 我们如何处理好前后端配置和请求库封装(koa/axios版)...
  4. Flask第一篇——URL详解
  5. python 垃圾回收机制
  6. 利用python进行数据分析之准备工作(1)
  7. Atitit MATLAB 图像处理 经典书籍attilax总结
  8. 电池管理系统(BMS)
  9. HTML+CSS期末大作业:家乡旅游网站设计——山东菏泽(6页) 简单个人网页设计作业 静态HTML旅行主题网页作业 DW个人网站模板下载 大学生简单个人网页作品代码
  10. 2020年11月程序员工资统计,平均14327元
  11. 学习Python比较好的书籍推荐
  12. 一网打尽“小黄图”!手把手教你造一只AI鉴黄神器(内附代码及数据集)
  13. Go语言国际电子表格文档格式标准实践
  14. 玩转英伟达jetson系列(一)刷系统
  15. 【分享】订阅用友U8集简云连接器同步费用审批数据至用友U8系统
  16. Mldonkey端口映射获取High id
  17. php简单富文本,JavaScript_Javascript实现简单的富文本编辑器附演示,复制代码 代码如下: span styl - phpStudy...
  18. 世界第一虚拟乐队举办了一场 AR 音乐会 #Gorillaz
  19. Android后台限制
  20. 悟空CRM (基于jfinal+vue+ElementUI的前后端分离CRM系统)

热门文章

  1. 用计算机弹莫问归期数字,莫问归期 - 在线打字测试(dazi.kukuw.com)
  2. 高通语音专题--呼叫保持流程和日志分析
  3. pnpm(Run “pnpm setup“ to create it automatically, or set the global-bin-dir setting, or the PNPM_HO)
  4. Spring-Mybatis 整合的两种方式
  5. 美网站评10大经典愚人节办公室恶作剧
  6. 人生的31个忠告(图解)
  7. cobalt strike安装
  8. kettle基本概念
  9. 关于最近激烈竞争的打车软件的一些看法
  10. .NETCore——依赖注入