统计一段文章的单词频率,取出频率最高的5个单词和个数(python)
练习题:统计一段英语文章的单词频率,取出频率最高的5个单词和个数(用python实现)
先全部转为小写再判定 lower()
怎么判定单词?
1 不是字母的特殊字符作为分隔符分割字符串 (避免特殊字符的处理不便,全部替换成'-')
2 正则分割
3 遍历字符串,取每个word
4 正则匹配 怎么统计个数?
将wordlist的word和word的个数放入dict,排序
'''
dinghanhua
2018-11-11
练习:一段英文文章,统计每个单词的频率,返回出现频率最高的5个单词和次数
''' import re art = ' If we want to" run Locust \ / distributed on multiple machines we would also have to specify the master host when starting the slaves (this is not needed when running Locust distributed on a single machine, since the master host defaults to 127.0.0.1):' '''
怎么判定单词?
1 不是字母的特殊字符作为分隔符分割字符串
2 遍历字符串,取每个word
3 正则匹配 怎么统计个数?
将wordlist的word和word的个数放入dict,排序
'''
word_dict = {} #用于统计 word:个数
word_list = [] #用于存放所有单词
# 找出所有不是字母的字符替换成统一的字符,split()分割之后便是单词
pattern = r'[^a-z]+'
art_new = re.sub(pattern,'-',art.lower()) #所有的非字母替换成-
word_list = art_new.split('-') #转成小写分隔单词
wordlist = list(filter(lambda x : x != '',word_list)) #去掉空串
print('所有的单词列表:',wordlist)
#正则表达式分隔
pattern = r'[^a-z]+' #非字母
word_list = re.split(pattern,art.lower()) #还要去除空串
print(word_list)
# 遍历字符串,获取每个word追加到wordlist (不好)
word =''
word_list2 = [] for letter in art.lower():
if letter.isalpha(): #如果是字母,追加到word
word += letter
else:
if word != '':
word_list2.append(word) #不是字母,word不为空的话追加wordlist
word = '' # word置空
print(word_list2)
# 正则表达式匹配单词
pattern = r'[a-z]+'
word_list3 = re.findall(pattern,art.lower())
print(word_list3)
最后的统计的代码:
#统计
for word in set(word_list):
word_dict[word] = word_list.count(word) #key=单词,value=单词在list里的count #取最多的前五个
print(sorted(word_dict.items(),key = lambda x:x[1],reverse=True)[0:5]) #dict根据value倒序,取前5个
word_dict = {}.fromkeys(word_list) #先用list生成dict的keys
for word in word_dict.keys():
word_dict[word] = word_list.count(word)
the end!
统计一段文章的单词频率,取出频率最高的5个单词和个数(python)的更多相关文章
- 统计输入任意的字符中中英文字母,空格和其他字符的个数 python
这里用到了三个函数: #判断是否为数字:str.isdigit()#是否为字母:str.isalpha()#是否为空格:str.isspace() def tongji(str): alpha = 0 ...
- 统计一段文字中出现频率最高的10个单词(c语言)
注:这次使用C语言做的这个程序.个别不懂的地方和算法部分是请教的其他同学,交流并吸收,所以收获颇多! 在程序中每一个地方我都做了注释,方便同学之间交流.也让老师容易看.程序也有很多不足的地方,但限于本 ...
- 使用PHP的strstr()函数来统计一段字符串中元音字母的个数(区分大小写)
<?php/**练习:统计一段字符串中所有元音字母的个数(区分大小写)*/$str='This is a test file.'; //原始字符串echo $str.'<br>'; ...
- OpenJudge计算概论-单词倒排【把句子内单词的顺序翻转】
/*================================================== 单词倒排 总时间限制: 1000ms 内存限制: 65536kB 描述 编写程序,读入一段英文 ...
- 实验:输入一篇英文新闻,以“#”结束,统计其中a-z这26个字母各出现的次数和总字符个数。(不区分大小写)
代码如下: #include <iostream> using namespace std; int main() { char ch; char s_letter[26]={'a','b ...
- 程序一 用记事本建立文件src.dat,其中存放若干字符。编写程序,从文件src.dat中读取数据,统计其中的大写字母、小写字母、数字、其它字符的个数,并将这些数据写入到文件test.dat中。
用记事本建立文件src.dat,其中存放若干字符.编写程序,从文件src.dat中读取数据,统计其中的大写字母.小写字母.数字.其它字符的个数,并将这些数据写入到文件test.dat中. #inclu ...
- java算法面试题:编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。
package com.swift; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File ...
- 三道习题(1、将单词表中由相同字母组成的单词归成一类,每类单词按照单词的首字母排序,并按 #每类中第一个单词字典序由大到小排列输出各个类别。 #输入格式:按字典序由小到大输入若干个单词,每个单词占一行,以end结束输入。)
#coding=gbk ''' 1.将单词表中由相同字母组成的单词归成一类,每类单词按照单词的首字母排序,并按 #每类中第一个单词字典序由大到小排列输出各个类别. #输入格式:按字典序由小到大输入若干 ...
- C++统计一段文字中各单词出现的频率
#include <iostream> using namespace std; /* run this program using the console pauser or add y ...
随机推荐
- Python入门书的读书笔记
入门书地址 三引号 (""" 或 ''') 来指定多行字符串字符串是不可变的输出小数点后三位 print('{0:.3f}'.format(1 / 3))输出字符串长度为 ...
- bugzilla部署问题
2018-09-25 1.部署环境 kvm虚拟机内 centos 7 系统 httpd+mariadb+bugzilla 关闭系统selinux.防火墙 setenforce 临时关闭se ...
- 3.CAS原子操作
什么是原子性操作,按照官方的解析:原子操作不能在一个中间操作中停止,要么全部成功要么全部失败.(An atomic action cannot stop in the middle: it eithe ...
- 【Tensorflow】 Object_detection之liunx服务器安装部署步骤记录
环境:centos7+anaconda python3.6 步骤: 1.下载Models cd 到预存放目录下,执行: git clone https://github.com/tensorflow/ ...
- jquery:字符串(string)转json
第一种方式: 使用js函数eval(); testJson=eval(testJson);是错误的转换方式. 正确的转换方式需要加(): testJson = eval("(" + ...
- hadoop-2.6.0.tar.gz + spark-1.6.1-bin-hadoop2.6.tgz的集群搭建(单节点)(CentOS系统)
福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 Java全栈大联盟 ...
- java collection与数组(Array)互转
先确定几个概念,这里说的数组元素,除基本类型数组外,并非指元素对象本身,而是它们的引用.换句话说,基本数组的元素是数值本身,非基本数组的元素都是一个地址(对应指针). 1.collection的元素不 ...
- matlab中如何根据t检验参数查找t检验值
这个问题花了一些时间.先看图 这个是t检验里面的公式,但是如何在matlab中找到该式子对应的值,我现在才知道. 就是这样:x=tinv(1-α/2,n-1)----t(n)分布的上侧α分位数 ...
- Basic Data Structures and Algorithms in the Linux Kernel--reference
http://luisbg.blogalia.com/historias/74062 Thanks to Vijay D'Silva's brilliant answer in cstheory.st ...
- APP测试点集合
一.功能性测试: (1)根据产品需求文档编写测试用例 (2)软件设计文档编写用例 二.兼容性适配性测试: (1)Android.iOS版本的兼容性 (2)手机分辨率兼容性 (3)网络的兼容性:2G/3 ...