利用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怎么计算单词出现的次数