实务中,我们经常需要统计某个词汇或事物出现的频度,如何才能实现呢?

事物与频度一一相对(映射),又要一分高下(排序),是字典和列表的拿手好戏。考虑到语言语法等差别,我们分别以常见的英文和中文为例。需要注意的是,目标文本应符合 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?相关推荐

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

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

  2. Python 《Hamlet》哈姆雷特英文词频统计

    英文词频统计 关键问题: 1.词语 -- 键 2.相同词语的累加 -- 值 讨论:定义什么数据类型 -- 字典类型 问题描述: I:文件的输入 P:采用字典类型的结构统计词语出现的频率 O:每个单词及 ...

  3. 用windows“记事本”创建一个文本文件(hamlet.txt),其中每行包含一段英文。试读出文件的全部内容,并判断:(1)该文本文件有多少行?(2)文件中以大写字母开头的有多少行?

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 题目: 代码: 效果截图: 总结 题目: 用windows"记事本"创建一个文本文件(hamlet.txt) ...

  4. Hamlet.txt下载及实现文本词频统计

    Hamlet.txt全文下载:https://python123.io/resources/pye/hamlet.txt 文本词频统计代码①如下: # CalHamlet_1.py def getTe ...

  5. hamlet.txt英文哈姆雷特下载及实现文本词频统计

    hamlet.txt全文下载:https://python123.io/resources/pye/hamlet.txt CalHamletV1.py: #CalHamletV1.py def get ...

  6. 哈姆雷特(hamlet)现代英语版

    最近在读哈姆雷特,网上读了一本中文译文,翻译得不错,总没体会到这书中神奇之处,想读读英文版,网上找到的都是原版,古英语,看得心累.网上找了一个现代英语版,本想用web scrape抓下来,抓了半天没成 ...

  7. python标准库学习4

    >>> os.environ["HOME"] 'C:\\Users\\Administrator'>>> os.getcwd() #获得当前的目 ...

  8. 真香!精心整理了 100+Python 字符串常用操作

    来源丨萝卜大杂烩 作者丨周萝卜 字符串作为平时使用最多的数据类型,其常用的操作我们还是很有必要熟记于心的,本文整理了多种字符串的操作的案例,还是非常用心,记得点赞收藏~ 字符串切片操作 test = ...

  9. python复合数据类型_python—组合数据类型

    本篇介绍python中集合.序列.字典相关数据类型: 1.集合类型及操作: 集合类型的定义:集合是多个元素的无序组合,集合和数学中集合类型概念一致:集合之间元素无序,每个元素唯一,不存在相同元素,集合 ...

最新文章

  1. java调用项目中的文件_详解eclipse项目中.classpath文件的使用
  2. 点击左侧导航栏切换右侧商品(左右联动)
  3. 排序算法汇总(转载收藏)
  4. php pdo 封装类,php pdo封装类代码(支持事务)
  5. kubernetes英语怎么读_陷阱英语单词怎么读?
  6. 看一下CDI 2.0 EDR1
  7. 如何导出久其报表所有数据_如何选择好的HR软件
  8. if ( document.all ) 可以简单的判断浏览器是否IE浏览器?
  9. android7.0提示定位,解决android7.0上某些PopuWindow显示位置不正确的问题
  10. lora信号测试小助手_LoRa是如何通过CAD来实现唤醒的
  11. matlab-罗曼诺夫斯基准则剔除粗大值
  12. 都昌时间轴控件功能说明
  13. [来料检验]触摸屏来料检验设想
  14. python手机号码检查的程序_Python手机号码归属地查询示例代码
  15. 好玩的数据结构与算法——八皇后游戏(回溯)
  16. 所有系统如何创建宽带连接服务器,Win7系统怎么建立宽带连接?Win7宽带连接的设置方法...
  17. 计算机考试 北京考场一日游
  18. 头条发布文章如何一篇文章发布道30+自媒体平台?
  19. 低版本 android 软件下载,触漫旧版本下载
  20. 【无标题】上课了上课了

热门文章

  1. 电气及计算机工程专业,电子/电气与计算机工程专业
  2. NPM私库搭建-verdaccio
  3. 站长工具的使用-11
  4. c语言水仙花 while,c语言如何解水仙花数
  5. 分析Promise,手写Promise,学习Promise,感受Promise
  6. Portal认证原理
  7. 高效工作准点下班|工作使用技巧分享一
  8. HTML与CSS——闪亮霓虹按钮(你值得拥有)(完整源码)
  9. Hash(哈希/散列)和Bloom Filter(布隆过滤器)
  10. 市长弃发妻,情人主播亲报新闻(图)