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

词频统计 SPEC 20180918

一、代码以及版本控制

代码地址:https://e.coding.net/hanhao/count_words.git

使用语言:python

使用git的客户端为: git push

二、重点/难点以及效果截图

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

重点/难点 :

(1)如何将py文件转化为exe文件

附上教程:https://www.cnblogs.com/hanhao970620/p/11537088.html

(2)英文字符的冗余校验和删除,解决办法是将字符等替换成空格

重要代码展示:

删除冗余字符:

def deal_Redundantwords(string):string = string.replace('\n', ' ').replace(',', ' ')s1 = list(string)num = len(s1)s1.append(' ')for i in range(num): if s1[i] in '."?\')-(;#$%&*!': #isalnum检测字符串是否有数组组成 if str(s1[i - 1].isalnum()) == 'True' and (str(s1[i + 1].isalnum()) == 'True'): pass else: s1[i] = ' ' for i in range(num): if s1[i] in ':': if s1[i + 1] == '/': pass else: s1[i] = ' ' #join连接字符数组 s = ''.join(s1) # print(s) return s

实现功能一:

list1 = text.replace('\n', ' ').lower().split()  # 保存原始数据list2 = list(set(list1))  # 去重之后的数据if (flag == 0):print("total  " + str(len(list2)))  # 小文本统计词汇量(功能1不输出words)else:print("total  " + str(len(list2)) + "  words")  # 统计词汇量print("\n")dir_a = {}  # 计算频数for str1 in list1:if str1 != ' ':if str1 in dir_a.keys(): dir_a[str1] = dir_a[str1] + 1 else: dir_a[str1] = 1 dir_b = sorted((dir_a).items(), key=lambda x: x[1], reverse=True) # 按照频数排序

执行效果截图:

得意、突破、困难的地方 ;
函数的了解程度:对isalnum(),jion()函数没有认知,导致在检测字符串和连接字符串过程中进行的十分困难。
冗余函数的定义:在项目中,我将去除冗余字符单独定义成一个函数,可以项目中四个功能反复调用,大大简化了程序。

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

重点/难点 :读文件,使用open函数(open(filename,mode,buffering,encoding)方法),将单词存入字典根据空格数计算词频

重要代码展示:

  try:with open(filename, 'r', encoding='UTF-8') as f_obj:content = f_obj.read()countNumber(content, flag)except FileNotFoundError:msg = "sorry,the file " + filename + " does not exist."print(msg)

执行效果截图:

得意、突破、困难的地方 :

大文件:对大文件的筛选难度要明显高于功能一的小文件,不过python中read,open函数起了很大作用。

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

重点/难点 :

(1)由于没有接触过批量读取文件中所在文档,所以导致耗时巨大。
(2)提取文件夹中类型为.txt文件,输入文件名,并存入列表。

重要代码展示:

找文件:

path = os.listdir(os.getcwd())  # 获取当前目录下所有文件folderList = []for p in path:if os.path.isdir(p):  # 找到所有文件夹

读文件:

for folder in folderList:if textFolder == folder:path1 = os.listdir(folder)  # 该文件夹下所有文件建成列表for i in path1:if os.path.splitext(i)[1] == '.txt':fileNameList.append(os.path.splitext(i)[0])

执行效果截图:

得意、突破、困难的地方 :

函数的调用:对os.path函数和splitext()的理解和调用解决的获取文件路径和分离文件后缀的问题,而这些函数在本项目前我并不了解。

功能4 :从控制台读入英文单篇作品,这不是为了打脸老五,而是为了向你女朋
友炫酷,表明你能提供更适合嵌入脚本中的作品(或者如她所说,不过是更灵活
的接口)。

重点/难点 :

(1)对于重定向的理解和实践(这里对老师所提出的四大概念:命令行参数、重定向、标准输入、控制台进行了重新理解)

详细内容求参考:https://www.cnblogs.com/hanhao970620/p/11536985.html

(2)用户输入文件名或者文本内容 捕获问题。

重要代码展示:

    elif sys.argv[1] == "-s":if (len(sys.argv) == 3):# print(sys.argv)flag = 0countFileWords(sys.argv[2], flag)else:# print(sys.argv) #重定向获取文件名redirect_words = sys.stdin.read()  # 存储文件名调用方法即可flag = 0 countNumber(redirect_words, flag)

执行效果截图:

得意、突破、困难的地方 :

对重定向的的实践,'<'在重定向中的意义是标准输入,而使用input()方法可以获取输入内容。

三、PSP表格

总结:

初见作业时,我在很长一段时间内是崩溃的,因为完全无从下手。出于想要了解和尝试python的目的,决定首次使用python完成项目,进行过程中基本一直是处于一个边学边做的状态。本次项目不仅让我在一定意义上认识到了自我,同时也是对自己的一个很大提高。在不停的焦躁和崩溃同时,我算是想python走出了一小步。该项目完成要感谢很多人,老师,室友,包括大学本科同学等等。在完成项目的过程中,我了解并应用了isalnum()replace()os.listdir()等等等一系列python函数用法,并了解了重定向,命令行参数等相关概念。

 

转载于:https://www.cnblogs.com/hanhao970620/p/11537479.html

韩昊20190912-3 词频统计相关推荐

  1. ik分词和jieba分词哪个好_Python 中文 文本分析 实战:jieba分词+自定义词典补充+停用词词库补充+词频统计...

    最近项目需要,实现文本的词频分析,折腾了几天才完成任务,有点成就感,最后整理总结一下这部分的内容,希望更多同僚受益. 一.使用前准备 环境:Python3.6 安装结巴:pip install ji ...

  2. 《Spark实时词频统计处理系统》

    ------此项目整理自<Spark Streaming 实时流式大数据处理实战>肖力涛                                             第8章 实 ...

  3. 北京交通大学Python课程设计大作业(四)——典籍词频统计

    北京交通大学Python课程设计大作业(四)--典籍词频统计 文章目录 北京交通大学Python课程设计大作业(四)--典籍词频统计 一.词频统计任务介绍 二.典籍词频统计python源代码如下 三. ...

  4. 20145233韩昊辰第二周实习实验报告

    20145233韩昊辰第二周C语言实习 实习内容 学习使用新系统中的C语言教学,完成25个课时的学习,在虚拟机中完成C语言代码编写与基础C语言知识理解. 因为虚拟机打开不方便,并且使用的是vc6编译的 ...

  5. Pytorch 文本数据分析方法(标签数量分布、句子长度分布、词频统计、关键词词云)、文本特征处理(n-gram特征、文本长度规范)、文本数据增强(回译数据增强法)

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 文本数据分析 学习目标: 了解文本数据分析的作用. 掌握常用的 ...

  6. 用R语言做词频统计_R语言 | 词频统计

    Python网络爬虫与文本数据分析 本章内容 导入停用词 读数据,分词 剔除停用词 导入停用词表 library(dplyr) ## [1] "?" "." & ...

  7. 统计csv词频_中文词频统计

    中文词频统计 1. 下载一长篇中文小说. <倚天屠龙记> 2. 从文件读取待分析文本. 3. 安装并使用jieba进行中文分词. pip install jieba import jieb ...

  8. 201671010417 金振兴 词频统计软件项目报告

    1.需求分析 按照<构建之法>第2章中2.3所述PSP流程,使用JAVA编程语言,独立完成一个英文文本词频统计的软件开发. .程序可读入任意英文文本文件,该文件中英文词数大于等于1个. . ...

  9. 字符串操作、文件操作,英文词频统计预处理

    1.字符串操作: 解析身份证号:生日.性别.出生地等 凯撒密码编码与解码 网址观察与批量生成 (1)解析身份证: 编译结果: (2)凯撒密码编码与解码 编译结果: 2.英文词频统计预处理 下载一首英文 ...

  10. hive进行词频统计

    统计文件信息: $ /opt/cdh-5.3.6/hadoop-2.5.0/bin/hdfs dfs -text /user/hadoop/wordcount/input/wc.input hadoo ...

最新文章

  1. 清华大学:确保博士生每年最低资助标准不低于5.1万元
  2. php yii composer下载,composer的安装和下载yii
  3. 2021-01-07 python opencv调节图片亮度与对比度
  4. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1077:统计满足条件的4位数
  5. sqlserver迁移数据到mysql_SQLServer数据库之将ABP的数据库从SQLSERVER迁移到MySql
  6. (46)System Verilog 类中变量随机激励权重分布
  7. Atiti 高并发程序设计 艾提拉著 目录 1. 第—部分 基础知识 2 1.1.  第1章 并行计算机的硬件基础   1.1 并行计算机的组成   1.2 共享存储器多处理器系统   1.3 消
  8. Linux下LOIC的下载和应用
  9. 精讲RestTemplate第6篇-文件上传下载与大文件流式下载
  10. cad快捷栏怎么调出来_cad左边工具栏不见了怎么办|cad工具栏怎么调出来_PC6教学...
  11. mysql默认密码树莓派_树莓派重置root密码
  12. 【转载】C++ 内存分配(new,operator new)详解
  13. maya要学python吗_Maya入门为什么会这么难?
  14. Relatively Prime Pairs
  15. Java中使用Atomic*实现原子锁线程安全
  16. 初学者:html中的表单详解(下面附有代码)
  17. 3D打印切片软件cura的使用方法
  18. Android LibVLC最新使用教程
  19. 原来变压器可以用来调节阻抗匹配!
  20. 故障分析 | 数据库表空间被 rm 后,怎么处理

热门文章

  1. 【历史上的今天】3 月 13 日:Windows NT 之父出生;首届无人车顶级赛事;微软上市
  2. 我们在GDC上公布了一些好消息
  3. Hibernate pojo对象的三种状态
  4. Linux系统下VMware虚拟机安装Win7 ISO操作系统
  5. 轻松搞明白:软切换和硬切换的区别
  6. 搬: 含有对象成员指针的类的对象成员指针初始化问题
  7. 论文阅读笔记:内卷involution《Involution: Inverting the Inherence of Convolution for Visual Recognition》
  8. 别说你不知道光纤有这七种类型!
  9. STM32的端口复用功能RCC_APB2Periph_AFIO
  10. 怎样自学python_怎样自学Python?