您的位置:首页 > 移动开发 > 微信开发

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

2018-01-13 22:34 441 查看
第 0004 题: 任一个英文的纯文本文件,统计其中的单词出现的个数。

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

f = open('num.txt')
word = []
word_num = {}
char = f.read(1)
while char:
if char == ' ' or char == '\n':
if word:
word = ''.join(word).lower()  #转成小写
if word in word_num:
word_num[word] += 1
else:
word_num[word] = 1
word = []
else:
word.append(char)
char = f.read(1)
if word:
word = ''.join(word).lower()
if word in word_num:
word_num[word] += 1
else:
word_num[word] = 1
word = []
for i,j in word_num.items():
print(i,j)


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

import re

f = open('num.txt')
word_list = []
reg = '\w+'   #/w是匹配字母、数字、下划线

for line in f:
word = re.findall(reg, line)    #也可以是word = line.split()
word_list.extend(word)

word_set = set(word_list)
word_dict = {word: word_list.count(word) for word in word_set}
for i, j in word_dict.items():
print(i, j)


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

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

from collections import Counter

word_list = ['I', 'am', 'zyb', 'zyb']
ans = Counter(word_list)
print(ans)


结果为:



代码很简洁,如下:

import re
from collections import Counter

f = open('num.txt')
word_list = []

for line in f:
word = line.split()
word_list.extend(word)

word_dict = dict(Counter(word_list))
for i, j in word_dict.items():
print(i, j)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐