zoukankan      html  css  js  c++  java
  • python练习题7.1词频统计

    请编写程序,对一段英文文本,统计其中所有不同单词的个数,以及词频最大的前10%的单词。

    所谓“单词”,是指由不超过80个单词字符组成的连续字符串,但长度超过15的单词将只截取保留前15个单词字符。而合法的“单词字符”为大小写字母、数字和下划线,其它字符均认为是单词分隔符。

    输入格式:

    输入给出一段非空文本,最后以符号#结尾。输入保证存在至少10个不同的单词。

    输出格式:

    在第一行中输出文本中所有不同单词的个数。注意“单词”不区分英文大小写,例如“PAT”和“pat”被认为是同一个单词。

    随后按照词频递减的顺序,按照词频:单词的格式输出词频最大的前10%的单词。若有并列,则按递增字典序输出。

    输入样例:

    This is a test.
    
    The word "this" is the word with the highest frequency.
    
    Longlonglonglongword should be cut off, so is considered as the same as longlonglonglonee.  But this_8 is different than this, and this, and this...#
    this line should be ignored.
    
    

    输出样例:(注意:虽然单词the也出现了4次,但因为我们只要输出前10%(即23个单词中的前2个)单词,而按照字母序,the排第3位,所以不输出。)

    23
    5:this
    4:is

    代码如下:

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    import sys
    #sys.stdin 标准输入
    # sys.stdout 标准输出
    # sys.stderr 标准错误输出
    
    s = sys.stdin.read()
    strs = s[:s.find('#')]
    
    key = set()
    for i in strs:
        if i.isalnum()==False and i!='_':
            key.add(i)
    for k in key:
        strs = strs.replace(k,' ')
    #去掉空格,全部变小写,变成列表
    strs=strs.rstrip(' ').lower().split() #全部变小写
    counts=dict()
    for i in strs:
        k=i[:15] #取前15个字符
        if k not in counts:
            counts[k]=1
        else:
            counts[k]+=1
    ans=sorted(counts.items(), key=lambda x:(-x[1], x[0]))
    print(len(counts))
    
    for i in range(0,int(0.1*len(counts))): #词频最大的前10%
        print(str(ans[i][1])+':'+ans[i][0])

    参考课堂的程序,基本上是抄过来的。

    越来越写不动了,理解能力跟不上了。~~~~(>_<)~~~~


    读书和健身总有一个在路上

  • 相关阅读:
    SSAS没有注册类别 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG)) 解决办法
    Javascript中暂停功能的实现
    【转】JQuery ajax json 实例
    SqlDataAdapter有关InsertCommand,UpdateCommand,DeleteCommand 实例
    绑定数组对象DataTable.Select返回值DataRow[]
    SQL SERVER 联想函数重写
    JQuery Dialog(转)
    温习C 文件操作
    轻松掌握Windows窗体间的数据交互
    反射方法调用时的一个错误:参数计数不匹配( parameter count mismatch )
  • 原文地址:https://www.cnblogs.com/Renqy/p/12786298.html
Copyright © 2011-2022 走看看