每天一个小程序—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题(统计单词出现次数)的主要内容,如果未能解决你的问题,请参考以下文章