每天一个小程序—0004题(统计单词出现次数)

Posted 谦谦君子,陌上其华

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每天一个小程序—0004题(统计单词出现次数)相关的知识,希望对你有一定的参考价值。

第 0004 题: 任一个英文的纯文本文件,统计其中的单词出现的个数。

 

先给出我一开始写得,只能说非常不优美,一个一个字符搞得。。。

 1 f = open(\'num.txt\')
 2 word = []
 3 word_num = {}
 4 char = f.read(1)
 5 while char:
 6     if char == \' \' or char == \'\\n\':
 7         if word:
 8             word = \'\'.join(word).lower()  #转成小写
 9             if word in word_num:
10                 word_num[word] += 1
11             else:
12                 word_num[word] = 1
13             word = []
14     else:
15         word.append(char)
16     char = f.read(1)
17 if word:
18     word = \'\'.join(word).lower()
19     if word in word_num:
20         word_num[word] += 1
21     else:
22         word_num[word] = 1
23     word = []
24 for i,j in word_num.items():
25     print(i,j)

 

第二次看了网上的,开始尝试用正则表达式来搞:

 1 import re
 2 
 3 f = open(\'num.txt\')
 4 word_list = []
 5 reg = \'\\w+\'   #/w是匹配字母、数字、下划线
 6 
 7 for line in f:
 8     word = re.findall(reg, line)    #也可以是word = line.split() 
 9     word_list.extend(word)
10 
11 word_set = set(word_list)
12 word_dict = {word: word_list.count(word) for word in word_set}
13 for i, j in word_dict.items():
14     print(i, j)

 

最后就是python自带的collections模块,里面有Counter计数器函数,可以自动统计单词出现次数。

可以先用个例子来了解一下Counter:

1 from collections import Counter
2 
3 word_list = [\'I\', \'am\', \'zyb\', \'zyb\']
4 ans = Counter(word_list)
5 print(ans)

结果为:

 

代码很简洁,如下:

 1 import re
 2 from collections import Counter
 3 
 4 f = open(\'num.txt\')
 5 word_list = []
 6 
 7 for line in f:
 8     word = line.split()
 9     word_list.extend(word)
10 
11 word_dict = dict(Counter(word_list))
12 for i, j in word_dict.items():
13     print(i, j)

 

以上是关于每天一个小程序—0004题(统计单词出现次数)的主要内容,如果未能解决你的问题,请参考以下文章

面试题总结1统计字符串中某个单词出现的次数

Linux命令经典面试题:统计文件中出现次数最多的前10个单词

统计单词感想

统计单词出现的次数

C语言 统计文本文件中出现的次数最多和最少的字符串

如何用python统计一个txt文件中各个单词出现的次数