Hamlet, are u ok?
实务中,我们经常需要统计某个词汇或事物出现的频度,如何才能实现呢?
事物与频度一一相对(映射),又要一分高下(排序),是字典和列表的拿手好戏。考虑到语言语法等差别,我们分别以常见的英文和中文为例。需要注意的是,目标文本应符合 UTF-8 编码标准,否则会报错。
《Hamlet》是莎翁所有戏剧中篇幅最长的一部,也是其最负盛名的剧本。全文 3200 余词,让我们看看主角 Hamlet 的出场频次,并向莎翁致敬!
考虑到英文的书写规则,首先需除外标点符号、特殊符号和大小写的干扰。
txt=txt.lower()
for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~': #"\"单独使用为转义符txt=txt.replace(ch,' ')
return txt
其次将得到的字符串切片,遍历计数,创建字典及键值对列表,然后根据值排序。
words=txt.split()
counts={}
for word in words:counts[word]=counts.get(word,0)+1
items=list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
然后将排序前十位输出:
for i in range(10):word,count=items[i]print('{0:<10}{1:>5}'.format(word,count)) #不显示次数则直接print(word)
结果如下:
可见,王子骑着白马,闪亮登场的次数屈居第九,是不是很惊喜☺
完整代码:
#词频统计def getTxt():txt=open('hamlet.txt','r',encoding='utf-8').read() #注意文件路径txt=txt.lower()for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~':txt=txt.replace(ch,' ')return txtTxt=getTxt()
words=Txt.split()
counts={}
for word in words:counts[word]=counts.get(word,0)+1
items=list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)for i in range(10):word,count=items[i]print('{0:<10}{1:>5}'.format(word,count))
参数 key=lambda x:x[1] 的含义,请参见:
Python 函数 sort(),sorted() 之区别及 key=lambda x:x[] 之理解
Hamlet, are u ok?相关推荐
- python哈姆雷特词频统计_《哈姆雷特与三国演义》词频统计,Hamlet,和
利用python实现对中英文文本的词频统计 英文文本<Hamlet> code1: #CalHamlet.py def getText(): txt = open("hamlet ...
- Python 《Hamlet》哈姆雷特英文词频统计
英文词频统计 关键问题: 1.词语 -- 键 2.相同词语的累加 -- 值 讨论:定义什么数据类型 -- 字典类型 问题描述: I:文件的输入 P:采用字典类型的结构统计词语出现的频率 O:每个单词及 ...
- 用windows“记事本”创建一个文本文件(hamlet.txt),其中每行包含一段英文。试读出文件的全部内容,并判断:(1)该文本文件有多少行?(2)文件中以大写字母开头的有多少行?
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 题目: 代码: 效果截图: 总结 题目: 用windows"记事本"创建一个文本文件(hamlet.txt) ...
- Hamlet.txt下载及实现文本词频统计
Hamlet.txt全文下载:https://python123.io/resources/pye/hamlet.txt 文本词频统计代码①如下: # CalHamlet_1.py def getTe ...
- hamlet.txt英文哈姆雷特下载及实现文本词频统计
hamlet.txt全文下载:https://python123.io/resources/pye/hamlet.txt CalHamletV1.py: #CalHamletV1.py def get ...
- 哈姆雷特(hamlet)现代英语版
最近在读哈姆雷特,网上读了一本中文译文,翻译得不错,总没体会到这书中神奇之处,想读读英文版,网上找到的都是原版,古英语,看得心累.网上找了一个现代英语版,本想用web scrape抓下来,抓了半天没成 ...
- python标准库学习4
>>> os.environ["HOME"] 'C:\\Users\\Administrator'>>> os.getcwd() #获得当前的目 ...
- 真香!精心整理了 100+Python 字符串常用操作
来源丨萝卜大杂烩 作者丨周萝卜 字符串作为平时使用最多的数据类型,其常用的操作我们还是很有必要熟记于心的,本文整理了多种字符串的操作的案例,还是非常用心,记得点赞收藏~ 字符串切片操作 test = ...
- python复合数据类型_python—组合数据类型
本篇介绍python中集合.序列.字典相关数据类型: 1.集合类型及操作: 集合类型的定义:集合是多个元素的无序组合,集合和数学中集合类型概念一致:集合之间元素无序,每个元素唯一,不存在相同元素,集合 ...
最新文章
- java调用项目中的文件_详解eclipse项目中.classpath文件的使用
- 点击左侧导航栏切换右侧商品(左右联动)
- 排序算法汇总(转载收藏)
- php pdo 封装类,php pdo封装类代码(支持事务)
- kubernetes英语怎么读_陷阱英语单词怎么读?
- 看一下CDI 2.0 EDR1
- 如何导出久其报表所有数据_如何选择好的HR软件
- if ( document.all ) 可以简单的判断浏览器是否IE浏览器?
- android7.0提示定位,解决android7.0上某些PopuWindow显示位置不正确的问题
- lora信号测试小助手_LoRa是如何通过CAD来实现唤醒的
- matlab-罗曼诺夫斯基准则剔除粗大值
- 都昌时间轴控件功能说明
- [来料检验]触摸屏来料检验设想
- python手机号码检查的程序_Python手机号码归属地查询示例代码
- 好玩的数据结构与算法——八皇后游戏(回溯)
- 所有系统如何创建宽带连接服务器,Win7系统怎么建立宽带连接?Win7宽带连接的设置方法...
- 计算机考试 北京考场一日游
- 头条发布文章如何一篇文章发布道30+自媒体平台?
- 低版本 android 软件下载,触漫旧版本下载
- 【无标题】上课了上课了