第7章-1 词频统计

  • 分析
    • 双重排序条件:字典序,数字降序
  • 题目
  • 解法
    • 自解
    • 参考代码截断到`#`输入的代码

分析

遇到含有回车的无效输入,while循环如何处理。同过input()字符串不断串联起来。
字符串思想,读入所有内容到一个串内。
关于并列情况的字典序输出。

双重排序条件:字典序,数字降序

list=sorted(counts.items(), key=lambda item:(-item[1], item[0]))
#按item第一位的倒序,也即数字的倒序,第零位的正序,也即单词的字典序排序

题目

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

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

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

输出格式:

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

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

解法

自解

s=""
while(True):s+=input()if "#" in s:break
s=s.replace(",","").replace("."," ").replace('"','').replace("#","")
lst=s.split()
for i in range(len(lst)):lst[i]=lst[i][:15].lower()
count={}
for i in lst:count[i]=count.get(i,0)+1
list=sorted(count.items(),key=lambda item:(-item[1],item[0]))
print(len(list))
for i in range(int(len(list)*0.1)):print("{}:{}".format(list[i][1],list[i][0]))

判断应该是字符过滤存在问题,如果#在中间而不是在一个回车换行之前,那么#之后的字符还会被添加到s中,而不能被过滤掉

参考代码截断到#输入的代码

import sys
s=sys.stdin.read()
s=s[:s.find("#")]#通过指针定位,找到输入中#字符出现的位置,并截断到此处
#构建一个输入的字符串中所有非数字、字母、下划线的字符的集合
t=set([i if i.isalnum()==False and i!='_' else " " for i in s ])
for i in t:#将字符串中所有非法字符替换为空格s=s.replace(i," ")

完整代码

import sys
s=sys.stdin.read()
s=s[:s.find("#")]
t=set([i if i.isalnum()==False and i!='_' else " " for i in s ])
for i in t:#将字符串中所有非法字符替换为空格s=s.replace(i," ")
lst=s.split()
for i in range(len(lst)):lst[i]=lst[i][:15].lower()
count={}
for i in lst:count[i]=count.get(i,0)+1
list=sorted(count.items(),key=lambda item:(-item[1],item[0]))
print(len(list))
for i in range(int(len(list)*0.1)):print("{}:{}".format(list[i][1],list[i][0]))

【PTA-python】第7章-1 词频统计 (30 分)--sys.stdin.read()读入到特定字符截至,双重排序条件key=lambda item:(-item[1], item[0])相关推荐

  1. 第7章-1 词频统计 (30 分)

    致读者:本人是一名通信专业学生,仅学了4天Python ,难免有些地方写的很笨拙. 写博客一方面是为了记录自己的学习过程中遇到的问题和思考,一方面是希望能够帮助到很多和自己一样处于困惑的读者. 水平有 ...

  2. 数据结构查找-7-3 词频统计 (30 分)

    7-3 词频统计 (30 分) 请编写程序,对一段英文文本,统计其中所有不同单词的个数,以及词频最大的前10%的单词. 所谓"单词",是指由不超过80个单词字符组成的连续字符串,但 ...

  3. Python实例10:文本词频统计

    Python实例10:文本词频统计 6.6.1 问题分析 在英文中文中,出现哪些词,出现多少次? 6.6.2 hamlet英文词频统计 CalHamletV1.py 6.6.3 三国演义人物出场统计 ...

  4. python实现中文分词和词频统计

    python2.7中实现中文分词,是引入了jieba中文分词库.再进行简单的词频统计. import sys reload(sys) sys.setdefaultencoding('utf-8') i ...

  5. python中去除字符串中首尾空格的函数_Python中去除字符串首尾特定字符的函数:strip()...

    Python中strip()函数的作用是去除一个字符串前导和尾部的特定字符,并返回结果字符串. Python中strip()函数默认是删除字符串前导和尾部空格,通过设定参数,也可以去除字符串前导和尾部 ...

  6. python学习笔记第六章文本词频统计

    我们这次需要解决的问题是在一篇文章中,哪一些词汇出现的最多,如何去做,我们考虑英文文本和中文的文本. 首先,我们先对哈姆雷特的英文文本进行统计词频. 1.获取文本并进行归一化 def gettext( ...

  7. python哈姆雷特词频统计_python—文本词频统计 哈姆雷特 txt 下载

    原博文 2020-05-13 15:49 − 文本词频统计 -- Hamlet Hamlet下载 链接:https://pan.baidu.com/s/1Is2mBAED57i6nI38lcnXAA ...

  8. python哈姆雷特词频统计_人生苦短我用Python——哈姆雷特词频统计

    在本文中利用Python对Hamlet英文词频进行统计,我们解决该问题的基本流程应该如下: 1.读取文件 2.将所有英文字母变成小写 3.根据标点符号,对!'#$%&()*+,-./:;< ...

  9. python哈姆雷特词频统计_《哈姆雷特与三国演义》词频统计,Hamlet,和

    利用python实现对中英文文本的词频统计 英文文本<Hamlet> code1: #CalHamlet.py def getText(): txt = open("hamlet ...

最新文章

  1. Android -------GestureDetector类的用法
  2. anaconda换成制定清华的源:一键解决外网下载慢的烦恼
  3. ubuntu live cd修复grub引导项
  4. [云炬创业基础笔记]第六章商业模式测试9
  5. 【Linux网络编程】套接字的介绍
  6. 网络流 增广路 回退
  7. MySQL默认数据库简介
  8. 【Python爬虫】知识点简单总结
  9. shell数值运算的方法
  10. C#LeetCode刷题之#594-最长和谐子序列​​​​​​​​​​​​​​(Longest Harmonious Subsequence)
  11. 计算机能帮助我学英语翻译,英语翻译以下几个句子,帮忙把汉语翻译成英语,请不要用软件翻!1、计算机能帮助人们从事复杂的计算.几十年前可能需要数月完成...
  12. IOS 学习笔记 2015-04-15 手势密码(原)
  13. React 折腾记 - (4) 侧边栏联动Tabs菜单-增强版(结合Mobx)
  14. RedHat Linux 5企业版开启VNCSERVER远程桌面功能[转]
  15. 从零开始写个编译器吧 - 程序流控制
  16. java day48【 Maven 介绍 、 Maven 的使用 、Maven 常用命令 、 maven 工程运行调试 、总结】...
  17. 恕我直言,你们的模型训练都还不够快
  18. 综述-自动驾驶中基于图像的3D目标检测
  19. DNF单机版搭建(局域网、外网)
  20. 易基因 | 文献速递:重亚硫酸盐扩增子测序研究通过DNA甲基化监测急性髓系白血病MRD

热门文章

  1. 华为mate40pro有没有鸿蒙,mate40pro不能升级鸿蒙吗?我啥也不懂,完蛋了
  2. 华为mate40Android,【猫哥爆料】史上最强Mate40官宣,坐实年度安卓机皇!
  3. ABAP 语法:“LOOP … ASSIGNING …”,可直接修改内表数据,效率更高
  4. 渗透测试人员常用的8种火狐插件
  5. 【转】Maximal Information Coefficient (MIC)最大互信息系数详解与实现
  6. 2020-2021中国区块链企业发展白皮书.pdf.
  7. 【node】mac系统下升级node版本
  8. 用802.1X+FreeRadius+LDAP实现网络准入方案
  9. windows防火墙是干什么的_Windows 之 防火墙
  10. 《数字图像处理》学习总结及感悟:第二章数字图像基础(4)像素间的关系