20200917-2 词频统计

作业要求参见:https://edu.cnblogs.com/campus/nenu/2020Fall/homework/11206

代码地址:https://zhangwenyan1.coding.net/public/wordcount/lib1/git

词频统计 SPEC

功能1:小文件输入

重点/难点:

  • 执行>wf -s test.txt命令时,需要将python编写的程序wf.py转成wf.exe应用程序。(安装 pyinstaller:命令行输入pip install pyinstaller,进入wf.py所在文件夹,命令行输入pyinstaller -F wf.py。)
  • 相同单词不重复计数,在统计单词出现频率前需要除冗余字符。
  • type 命令用来查看指定目录下文件的内容, 如果一个文件内容比较少, 则用 type 来查看非常方便。

注意:输出形式

重要代码(除冗余字符):

    for i in range(n):
        if s1[i] in '".?\')(-;#$%&*!':
            if str(s1[i - 1].isalnum()) == 'True' and (str(s1[i + 1].isalnum()) == 'True'):
                pass
            else:
                s1[i] = ' '
    for i in range(n):
        if s1[i] in ':':
            if s1[i + 1] == '/':
                pass
            else:
                s1[i] = ' '

重要代码(统计单词出现频率并按频数排序输出):

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)  

执行效果图:

功能2:支持命令行输入英文作品的文件名

重点/难点:

  • 打开文件,读取文件内容
  • 统计单词
  • try:...except的用法

重要代码:

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

执行效果图:

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

重点/难点:

  • 通过文件所在的文件夹名批量统计词频
  • 找文件
  • 读文件

注意:只列出出现次数最多的10个单词。

重要代码:

将文件夹下所有文件建成列表,输出文件名并统计每个文件词频信息。

    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])
    for filenames in fileNameList:
        fileName = filenames + ".txt"
        path = pathCurrent + fileName
        print(filenames)
        countFileWords(path, flag)
        print("----")

执行效果图:

功能4 从控制台读入英文单篇作品,表明你能提供更适合嵌入脚本中的作品。如果读不懂需求,请教师兄师姐,或者 bing: linux 重定向。

重点/难点:

  • 重定向的理解、应用
  • 命令行参数
  • 标准输入、标准输出

重要代码:

    elif sys.argv[1] == "-s":
        if (len(sys.argv) == 3):
            # print(sys.argv)
            flag = 0
            countFileWords(sys.argv[2], flag)
        else:
            redirect_words = sys.stdin.read()  
            flag = 0
            countWord(redirect_words, flag)

执行效果图:

总结分析:将标准输入重定向为文件the_show_of_the_ring.txt,统计词频并输出(不重复),还没有完全满足题目输入形式,有待改进。

功能实现过程中困难地方:

  • python基本语法不够熟练,通过查资料虽得以解决,但比较费时间,之后需要尽快熟悉python语言,多实践练习。
  • 满足输入输出形式 

PSP:

代码及版本控制:

涉及主要步骤:

  1. Git安装及配置
  2. TortoiseGit安装
  3. 创建coding.net账号
  4. 设置公钥,本地仓库与coding.net上远程仓库之间传输一般采用SSH方式,方便进行版本控制。
  5. 配置账户(用户名及邮箱)
  6. 在coding.net上创建项目及代码仓库。
  7. 创建本地仓库,加入测试文件
  8. 连接本地仓库和远程仓库
  9. 在本地仓库中加入相关文件(add、commit)
  10. 推送文件到远程仓库

注意:完成配置和相关操作后要进行相应测试,确保正确。

总结:这部分是我提升比较大的地方,从最开始的不了解,到慢慢有了更深的理解,出现很多问题(因为操作顺序、命令不正确),然后一步一步检查错误解决问题(查资料+测试),最后成功将本地仓库和coding.net上远程仓库建立连接,并可进行pull和push,完成任务要求。

posted @ 2020-09-23 19:38  zwh12  阅读(196)  评论(0编辑  收藏  举报