【python案例】按序统计文本中单词出现的个数
加入一个文本中有数几段话,几千个英文单词,现在我们要来统计其中的因为跟单词出现的个数。
用python很容易实现。
第一步
打开文件,读取所有内容。
这里我们用
1 2 3 4 | #打开文件 f = open(filename, 'rb') # 读取全部内容 s = f.read() |
第二步
获取内容中全部英文单词,用python的re正则来获取,这里列举出了三种方式。
1 2 3 | #第一种方式获取所有英文单词 reObj = re.compile('\b?(\w+)\b?') words = reObj.findall(s) |
1 2 3 | #第二种方式获取所有英文单词 #reObj = re.compile('[a-zA-Z0-9]+') words = reObj.findall(s) |
1 2 | #第三种方式获取所有英文单词 #words = re.split('\W+', s) |
其中第一种二种可以将compile预编译中的正则合并到findall中。
第三步
通过字典的方法将字段写入到字典中,并且判断重复的填写数量。
第四步
用sorted方法将字典转换为列表后然后排序
第五步
循环输出。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #!/usr/bin/python # -*- coding: utf-8 -*- import string import re # 统计英文字符出现的字数 def word_count(filename): #打开文件 f = open(filename, 'rb') # 读取全部内容 s = f.read() #第一种方式获取所有英文单词 reObj = re.compile('\b?(\w+)\b?') #第二种方式获取所有英文单词 #reObj = re.compile('[a-zA-Z0-9]+') words = reObj.findall(s) #第三种方式获取所有英文单词 #words = re.split('\W+', s) #新建字典 wordDict = dict() for word in words: # 如果字典中存在则数量加1,不存在等于1 if word.lower() in wordDict: # 转化为小写 wordDict[word.lower()] += 1 else: wordDict[word.lower()] = 1 f.close() #将字典转换为列表以后,然后排序,按照值,返回的是一个列表 wordDict = sorted(wordDict.items(), key = lambda x: x[1], reverse = True) #输出单词和数量 for key, value in wordDict: print('%s: %s' % (key, value)) if __name__ == '__main__': filename = 'words.txt' word_count(filename) |
最后我们来看看结果。
【python案例】批量修改目录内的图片尺寸 layer.prompt使文本框为空的情况下也能点击确定
文章不错支持一下吧