Python统计单词出现的次数_python


当前第2页 返回上一页

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

实现

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

# -*- coding:utf-8 -*-

import io

import re

class Counter:

 def __init__(self, path):

 """

 :param path: 文件路径

 """

 self.mapping = dict()

 with io.open(path, encoding="utf-8") as f:

  data = f.read()

  words = [s.lower() for s in re.findall("\w+", data)]

  for word in words:

  self.mapping[word] = self.mapping.get(word, 0) + 1

 def most_common(self, n):

 assert n > 0, "n should be large than 0"

 return sorted(self.mapping.items(), key=lambda item: item[1], reverse=True)[:n]

if __name__ == '__main__':

 most_common_5 = Counter("importthis.txt").most_common(5)

 for item in most_common_5:

 print(item)

打印结果:

('is', 10)
('better', 8)
('than', 8)
('the', 6)
('to', 5)

总结

我在看大家代码的时候,很多代码依然存在有命名不规范(建议读PEP8),代码的排版混乱(阅读起来很困难,建议用Pycharm进行格式化)。还有不少代码的实现方式看起来很复杂(往往越复杂的代码Bug越多)。当然,实现方法不是唯一。

比如Python模块本身就提供了一个collections.Counter的类,它继承自dict类,就是用于做统计的,我发现有部分同学使用的就是这个类来实现的,细心的你可能发现了,我实现的这个Counter和collections下面那个Counter很像,其实这就是造轮子,造轮子可以锻炼我们的编程思维,当然在工作上有现成的东西就没必要自己造轮子了,除非你有信心做得更好。你也可以思考思考,假如Python没有提供Counter这个工具,你该怎么做。

另外,该模块还提供一个有序的字典对象 OrderedDict,使用它可以免去我们手动排序的操作。最后建议大家学习总结上面我提到的所有内容。如果你能坚持100天,相信你对Python的掌握程度是游刃有余的。

相关推荐:

Python实现二维数组输出为图片_python

python实现对实例属性进行类型检查

以上就是Python统计单词出现的次数_python的详细内容,更多文章请关注木庄网络博客!!

返回前面的内容

相关阅读 >>

vscode下好用的Python插件及配置_Python

使用Python开发简单的小游戏

Python能解微分方程吗

Python能做什么

Python是强类型语言吗

爬虫问题解决的相关问题

conda install和pip install的区别有哪些?

Python使用matplotlib绘制3d图形(代码示例)

Python列表中函数&方法详解

学习Python安装什么

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...