利用Python怎么计算单词出现的次数

  介绍

利用Python怎么计算单词出现的次数?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

<强>题目:

统计一个文件中每个单词出现的次数,列出出现频率最多的5个单词。

<强>前言:

这道题在实际应用场景中使用比较广泛,比如统计历年来四六级考试中出现的高频词汇,记得李笑来就利用他的编程技能出版过一本背单词的畅销书,就是根据词频来记单词,深受学生喜欢。这就是一个把编程技能用来解决实际问题的典型场景。另外,在数据分析时,那些词云效果本质上都是基于词频统计来调整字体的大小,如果你能熟练运用Python中的知识来解决问题的话,说明你真的入门Python了。

<强>分析

本题主要考察以下几个方面的知识点:

<强> 1,如何正确读写文件

在Python中读写文件可以使用内置函数()开放,而开放函数在python2和python3中有一定的区别,比如Python中可以指定读写文件的编码格式,而Python则不可以,为了同时兼容2和3,我们通常会使用io模块下面函的开放数,大家可以查文档搞清楚它们之间的区别,培养主动学习能力和查资料的习惯。

另外一点是读写文件完成之后是需要关闭文件描述符的,除了可以使用试…除了…最后的语法之后,我们还可以使用更优雅的与…的语法来自动关闭文件。

<强> 2,如何对数据进行排序

排序函数是一个使用频率很高的内置函数,它的用法也很强大,因为它可以通过指定参数键来进行自定义排序,也就意味着你不仅可以对数字排序,对字母排的序,还可以对列表,字典,自定义的对象进行排序,你只需要要告诉排序函数的排序规则是什么,比如一个人对象,我既可以根据年龄排序也可以根据身高体重来排的序,所以这个函数时非常灵活的,另外,对于列表对象有自带的那种方法,如果能区分清楚列表。排序与分类之间区别那说明你已经能灵活运用了。

<强> 3,字典数据类型的运用

做词频统计,用字典无疑是最合适的数据类型,单词作为字典的关键,单词出现的次数作为字典的价值,很方便地就记录好了每个单词的频率,字典很像我们的电话本,每个名字关联一个电话号码。另外,字典最大的特点就是它的查询速度会非常快。理想情况下时间复杂度为O(1),我是说理想情况,如果你想深入了解字典的话,建议看看这篇文章https://www.laurentluce.com/posts/python-dictionary-implementation/

<强> 4,正则表达式的运用

对文本,字符串处理,正则表达式简直是神器,无论是做数据爬虫还是数据清洗使用非常广泛,当然,正则表达式并不是Python特有的东西,所有编程语言都支持,我们要做的除了学习正则表达式还有他的API,只有熟悉了API我们才能运用到实际场景中去。关于正则表达式推荐一篇文章:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html,另外我还发现有同学引入了jieba分词库,这个库在做中文分词非常有用,感兴趣的可以去了解一下。

<强>实现

分析完之后,我们实现起来其实是非常快的,所以我们在拿到一个需求的时候,首先肯定是把需求弄清楚,想想大概可以用哪些技术来实现,随后才是动手写代码,其实我们在工作上,真正写代码的时间还不到一半。

#, - *安康;编码:utf-8  - * -   import  io   import 再保险   class 计数器:   ,def  __init__(自我,,路径):   ,“““   ,:param 路径:文件路径   ,“““=,,self.mapping  dict类型()   ,with  io.open(路径,编码=皍tf-8"), as  f:   时间=data 才能;f.read ()   时间=words 才能;[s.lower (), for  s 拷贝re.findall (“\ w +“,,数据))   for 才能;word 拷贝的话:   self.mapping才能[词],=,self.mapping.get(单词,,0),+ 1   ,def  most_common(自我,,n):   ,assert  n 祝辞,0,,“n  should  be  large  than  0“;   ,return 排序(self.mapping.items(),,关键=lambda 项目:,项目[1],,反向=True) (n):   if  __name__ ==, & # 39; __main__ # 39;:=,most_common_5 计数器(“importthis.txt") .most_common (5)   ,for  item  most_common_5拷贝:   ,打印(项)

打印结果:

(& # 39;如果# 39;10)
(& # 39;更好的# 39;,8)
(& # 39;比# 39;,8)
(& # 39;知道# 39;6)
(& # 39;伍仟# 39;5)

利用Python怎么计算单词出现的次数