【PTA-python】第7章-1 词频统计 (30 分)--sys.stdin.read()读入到特定字符截至,双重排序条件key=lambda item:(-item[1], item[0])
第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])相关推荐
- 第7章-1 词频统计 (30 分)
致读者:本人是一名通信专业学生,仅学了4天Python ,难免有些地方写的很笨拙. 写博客一方面是为了记录自己的学习过程中遇到的问题和思考,一方面是希望能够帮助到很多和自己一样处于困惑的读者. 水平有 ...
- 数据结构查找-7-3 词频统计 (30 分)
7-3 词频统计 (30 分) 请编写程序,对一段英文文本,统计其中所有不同单词的个数,以及词频最大的前10%的单词. 所谓"单词",是指由不超过80个单词字符组成的连续字符串,但 ...
- Python实例10:文本词频统计
Python实例10:文本词频统计 6.6.1 问题分析 在英文中文中,出现哪些词,出现多少次? 6.6.2 hamlet英文词频统计 CalHamletV1.py 6.6.3 三国演义人物出场统计 ...
- python实现中文分词和词频统计
python2.7中实现中文分词,是引入了jieba中文分词库.再进行简单的词频统计. import sys reload(sys) sys.setdefaultencoding('utf-8') i ...
- python中去除字符串中首尾空格的函数_Python中去除字符串首尾特定字符的函数:strip()...
Python中strip()函数的作用是去除一个字符串前导和尾部的特定字符,并返回结果字符串. Python中strip()函数默认是删除字符串前导和尾部空格,通过设定参数,也可以去除字符串前导和尾部 ...
- python学习笔记第六章文本词频统计
我们这次需要解决的问题是在一篇文章中,哪一些词汇出现的最多,如何去做,我们考虑英文文本和中文的文本. 首先,我们先对哈姆雷特的英文文本进行统计词频. 1.获取文本并进行归一化 def gettext( ...
- python哈姆雷特词频统计_python—文本词频统计 哈姆雷特 txt 下载
原博文 2020-05-13 15:49 − 文本词频统计 -- Hamlet Hamlet下载 链接:https://pan.baidu.com/s/1Is2mBAED57i6nI38lcnXAA ...
- python哈姆雷特词频统计_人生苦短我用Python——哈姆雷特词频统计
在本文中利用Python对Hamlet英文词频进行统计,我们解决该问题的基本流程应该如下: 1.读取文件 2.将所有英文字母变成小写 3.根据标点符号,对!'#$%&()*+,-./:;< ...
- python哈姆雷特词频统计_《哈姆雷特与三国演义》词频统计,Hamlet,和
利用python实现对中英文文本的词频统计 英文文本<Hamlet> code1: #CalHamlet.py def getText(): txt = open("hamlet ...
最新文章
- Android -------GestureDetector类的用法
- anaconda换成制定清华的源:一键解决外网下载慢的烦恼
- ubuntu live cd修复grub引导项
- [云炬创业基础笔记]第六章商业模式测试9
- 【Linux网络编程】套接字的介绍
- 网络流 增广路 回退
- MySQL默认数据库简介
- 【Python爬虫】知识点简单总结
- shell数值运算的方法
- C#LeetCode刷题之#594-最长和谐子序列​​​​​​​​​​​​​​(Longest Harmonious Subsequence)
- 计算机能帮助我学英语翻译,英语翻译以下几个句子,帮忙把汉语翻译成英语,请不要用软件翻!1、计算机能帮助人们从事复杂的计算.几十年前可能需要数月完成...
- IOS 学习笔记 2015-04-15 手势密码(原)
- React 折腾记 - (4) 侧边栏联动Tabs菜单-增强版(结合Mobx)
- RedHat Linux 5企业版开启VNCSERVER远程桌面功能[转]
- 从零开始写个编译器吧 - 程序流控制
- java day48【 Maven 介绍 、 Maven 的使用 、Maven 常用命令 、 maven 工程运行调试 、总结】...
- 恕我直言,你们的模型训练都还不够快
- 综述-自动驾驶中基于图像的3D目标检测
- DNF单机版搭建(局域网、外网)
- 易基因 | 文献速递:重亚硫酸盐扩增子测序研究通过DNA甲基化监测急性髓系白血病MRD
热门文章
- 华为mate40pro有没有鸿蒙,mate40pro不能升级鸿蒙吗?我啥也不懂,完蛋了
- 华为mate40Android,【猫哥爆料】史上最强Mate40官宣,坐实年度安卓机皇!
- ABAP 语法:“LOOP … ASSIGNING …”,可直接修改内表数据,效率更高
- 渗透测试人员常用的8种火狐插件
- 【转】Maximal Information Coefficient (MIC)最大互信息系数详解与实现
- 2020-2021中国区块链企业发展白皮书.pdf.
- 【node】mac系统下升级node版本
- 用802.1X+FreeRadius+LDAP实现网络准入方案
- windows防火墙是干什么的_Windows 之 防火墙
- 《数字图像处理》学习总结及感悟:第二章数字图像基础(4)像素间的关系