• 20180912-3 词频统计


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

    Git地址 https://e.coding.net/thiking/ci_ping_tong_ji.git

    一、功能一

        1、功能要求

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

         2、功能难点:

      (1).如何将文本中的空格和标点清除

       首先利用.replace( )将文本中的所有标点转化为空格,然后利用.split()将清除文档中的所有空格。

      (2)将文本中的所有大写单词转化为小写

              利用封装好的lower()把所有大写单词转化为小写

      (3)如何生成.exe文件,

          通过上网查看相应资料,首先安装pyinstaller,然后利用命令行 “pyinstaller  -F   项目名”     网上参考地址为:https://blog.csdn.net/sinat_39022932/article/details/89135501

           3、部分代码

    def process_buffer(bvffer):
        total = 0
        if bvffer:
            word_freq = {}
            bvffer = bvffer.lower()                       # 下面添加处理缓冲区 bvffer代码,统计每个单词的频率,存放在字典word_freq
            for ch in '“‘!;,.?”':                         #清除文档中的标点
                bvffer = bvffer.lower().replace(ch, " ")  #将所有字母转换成小写,便于统计,
            words = bvffer.strip().split()                #strip消除空白符,split以空格作为单词分界
            total = total + len(words)
            print("total:"+str(total))
            for word in words:
                word_freq[word] = word_freq.get(word, 0)+1   #读取到的单词存放到字典
            Output(word_freq)
    def Output(word_freq):
        if word_freq:
            sorted_word_freq = sorted(word_freq.items(), key=lambda v: v[1], reverse=True)
            for item in sorted_word_freq[:10]:  # 输出 Top 10 的单词
                print('%-8s%5d' % (item[0], item[1]))

      4、运行截图

    二、功能二

      1、功能要求

                支持命令行输入英文作品的文件名。

           2、功能难点    

       (1)如何判断输入是否携带后缀名.txt

        利用参数sys.argv[1],传入函数count中,首先判断sys.argv[1]中是否携带.txt的后缀名,如果有直接利用open()函数打开文档,否则给它添加一个.txt的后缀名,然后再执行                      取数据操作。      参考往届学长的代码:https://www.cnblogs.com/nenusoft/p/9696784.html

      3、部分代码

    def Count(accept):
        s = '.txt'
        if s in accept:
            path = accept
        else:
            path = accept + '.txt'
        f = open(path, 'r')                #‘r’模式打开文件以后可以调用read函数一次性将文件里的内容全部读取出来
        bvffer = f.read()                  # 读文件到缓冲区
        f.close()
        process_buffer(bvffer)

      4、运行截图

    三、功能三

      1、功能要求

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

           2、功能难点     

       (1) 判断是否输入的名字是否为目录名

         利用os.path.isdir()判断是否为目录名

       (2) 判断是否为文件

        利用os.path.isfile()判断是否为的文件,然后再执行词频查询

       3、部分代码

    elif os.path.isdir(sys.argv[1]):    #判断路径是否为目录
             FindfileCount(sys.argv[1])     #功能三
    def FileCount(path):    #文件数量查找
        print(path)              #输出文本名
        f = open(path, 'r')
        bvffer = f.read()
        f.close()
        process_buffer(bvffer)
        print('----')
    def FindfileCount(path1):
        files = os.listdir(path1)    #用于返回指定的文件夹包含的文件或文件夹的名字的列表
        for file in files:
            if os.path.isfile(file): #检测路径是否是是文件
               FileCount(file)

       4、运行截图

    四、功能四

      1、功能要求

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

      2、功能难点

      (1)不理解什么是重定向

        重定向是指将原来从标准输入读取数据的文件操作重新定向为从向其他文件读取数据;将原来要输出到标准输出的内容,从新定向输出到指定的其他文件中。

        参考网址:https://blog.csdn.net/weixin_40921797/article/details/82056426

      (2)如何利用python做重定向

        在Python中,文件对象sys.stdin、sys.stdout和sys.stderr分别对应解释器的标准输入、标准输出和标准出错流。针对这个功能的实现我只采用了sys.stdout(标准输出),只是                 从屏幕中读入,然后再进行词频查询。  

        参考网址:https://blog.csdn.net/xyh421/article/details/79513259

      (3)针对功能四仍然有难以解决的问题

                   命令行的输入问题,如何实现从文件到文件的重定向。

      3、部分代码

    def FindlocalText(inputText):
           filepath = "D://"
           filename = "out.txt"
           fullname = filepath + filename
           standard_output = sys.stdout       # 备份默认的标准输出(输出值控制台)
           sys.stdout = open(fullname, "w+")     #将标准输出重定向至文件
           process_buffer(inputText)          #读入文本中
           sys.stdout.close()                 # 关闭文件
           sys.stdout = standard_output       # 恢复默认标准输出

      4、运行截图

    五、PSP表格

        

  • 相关阅读:
    网络编程学习小结
    我的学习笔记_Windows_HOOK编程 2009-12-03 11:19
    void及void指针含义的深刻解析
    Android开发之自己定义TabHost文字及背景(源码分享)
    ActionBar自己定义改动无效解决方法
    一位Erlang程序猿的自白
    Xcode 5.1安装插件:规范凝视生成器VVDocumenter
    Socket程序中的Error#10054错误
    CSDN博客清理缓存
    ACM 位运算
  • 原文地址:https://www.cnblogs.com/dongyahui/p/11540733.html
Copyright © 2020-2023  润新知