首页 > 技术文章 > 20180918-1 词频统计

handsome-blog 原文

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

一、项目功能的重点、难点 及执行效果

1.(1)功能1的执行效果截图(功能未实现,无截图)

  遗憾没能实现功能一,因为在我通过命令行参数成功执行功能2和功能3之后,没有想明白如何通过控制台执行功能一。

  我只能在pycharm平台上实现这个功能。

   (2)在构思功能1中已解决的问题

  a.要实现功能1,字典和列表的运用是最重要的部分,这些部分已实现

  b.其次是对单词的区分,这里要将文本文档中的标点用空格代替,然后用split函数进行分割,统计单词个数以后将其插入到空字典中

  c.可以用parseText(.lower())函数将所有单词小写

  (3)未解决的问题

  无法通过控制台输入

  (4)功能1的部分代码

1 def parseText(text):
2     for ch in "~!@#$%^&*(()_+-={}[]<>,.?/;':"|\":
3         text = text.replace(ch, " ")
4     words = text.split()
5     return words
 1 words = parseText(name.lower())
 2         word_count = {}
 3         for word in words:
 4             if word in word_count:
 5                 word_count[word] += 1
 6             else:
 7                 word_count[word] = 1
 8                 total += 1
 9         items = [(count, word) for (word, count) in word_count.items()]
10         items.sort(reverse=True)
11         print "total:", total
12         print ''
13         i = 0
14         for item in items:
15             print item[1], item[0]
16             i += 1
17             if i >= 10:
18                 break

2.(1)功能2的执行效果截图

  (2)功能2中的重点和难点

  a.在功能一的基础上,实现这一功能需要使用open()函数和read()函数对从键盘录入的文件名进行读取

  b.实现这一功能需要使用命令行参数,需要导入sys模块

  c.实现这一功能还需os.path.isfile()函数判断从键盘录入的字符串是否为文件名

  (3)实现功能2的主要代码

1 name = sys.argv[1]
2     if os.path.isfile(name):   
3         novel = open(name)
4         text = novel.read()
5         words = parseText(text.lower())

3.(1)功能3的执行效果截图

(2)功能3中的重点和难点

  a.实现这一功能同样需要使用命令行参数,仍需要导入sys模块

  b.实现这一功能需os.path.isdir()函数判断从键盘录入的字符串是否为目录名

  c.需要使用os.chdir()函数将当前目录改为从键盘输入的文件夹

  d.需要使用glob.glob("*.txt")函数遍历当前目录下所有的以.txt为后缀的文件

(3)实现功能3的主要代码

1     elif os.path.isdir(name):                #判断输入的字符串是否为目录
2         os.chdir(name)              #更改当前目录
3         files = glob.glob("*.txt")       #遍历当前目录下所有的文本文档
4         for file in files:
5             total = 0
6             novel = open(file)
7             text = novel.read()
8             words = parseText(text.lower())

4.(1)功能4的执行效果截图(功能未实现,无截图)

   (2)功能4未解决的问题

  a.参见其他同学上交的作业,我认为没实现这个功能的原因在于未理解重定向的概念和使用方法。对于重定向的概念,我是在最初的两天进行学习的,由于对重定向理解的不好,没有将其灵活运用到这个功能中,比较遗憾。

  b.第二问题是无法正确使用命令行参数,无法从控制台输入作品名。

二、PSP

功能实现及测试PSP

 

三、代码及版本控制

本项目地址为:https://coding.net/u/xumonv/p/word_count/git

使用的git客户端为:tortoisegit

推荐阅读