1. 练习题:统计一段英语文章的单词频率,取出频率最高的5个单词和个数(用python实现)
  1. 先全部转为小写再判定 lower()
  1. 怎么判定单词?
    1 不是字母的特殊字符作为分隔符分割字符串 (避免特殊字符的处理不便,全部替换成'-')
    2 正则分割
    3 遍历字符串,取每个word
    4 正则匹配
  2.  
  3. 怎么统计个数?
    wordlistwordword的个数放入dict,排序
  4.  
  1. '''
  2. dinghanhua
  3. 2018-11-11
  4. 练习:一段英文文章,统计每个单词的频率,返回出现频率最高的5个单词和次数
  5. '''
  6.  
  7. import re
  8.  
  9. 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):'
  10.  
  11. '''
  12. 怎么判定单词?
  13. 1 不是字母的特殊字符作为分隔符分割字符串
  14. 2 遍历字符串,取每个word
  15. 3 正则匹配
  16.  
  17. 怎么统计个数?
  18. 将wordlist的word和word的个数放入dict,排序
  19. '''
  1. word_dict = {} #用于统计 word:个数
  2. word_list = [] #用于存放所有单词
  1. # 找出所有不是字母的字符替换成统一的字符,split()分割之后便是单词
  1. pattern = r'[^a-z]+'
    art_new = re.sub(pattern,'-',art.lower()) #所有的非字母替换成-
  1. word_list = art_new.split('-') #转成小写分隔单词
  1. wordlist = list(filter(lambda x : x != '',word_list)) #去掉空串
  2.  
  3. print('所有的单词列表:',wordlist)
  1. #正则表达式分隔
  1. pattern = r'[^a-z]+' #非字母
    word_list = re.split(pattern,art.lower()) #还要去除空串
    print(word_list)
  1. # 遍历字符串,获取每个word追加到wordlist (不好)
  2. word =''
  3. word_list2 = []
  4.  
  5. for letter in art.lower():
  6. if letter.isalpha(): #如果是字母,追加到word
  7. word += letter
  8. else:
  9. if word != '':
  10. word_list2.append(word) #不是字母,word不为空的话追加wordlist
  11. word = '' # word置空
  12. print(word_list2)
  1. # 正则表达式匹配单词
  2. pattern = r'[a-z]+'
  3. word_list3 = re.findall(pattern,art.lower())
  4. print(word_list3)

最后的统计的代码:

  1. #统计
  2. for word in set(word_list):
  3. word_dict[word] = word_list.count(word) #key=单词,value=单词在list里的count
  4.  
  5. #取最多的前五个
  6. print(sorted(word_dict.items(),key = lambda x:x[1],reverse=True)[0:5]) #dict根据value倒序,取前5个
  1. word_dict = {}.fromkeys(word_list) #先用list生成dict的keys
  2. for word in word_dict.keys():
  3. word_dict[word] = word_list.count(word)

the end!

统计一段文章的单词频率,取出频率最高的5个单词和个数(python)的更多相关文章

  1. 统计输入任意的字符中中英文字母,空格和其他字符的个数 python

    这里用到了三个函数: #判断是否为数字:str.isdigit()#是否为字母:str.isalpha()#是否为空格:str.isspace() def tongji(str): alpha = 0 ...

  2. 统计一段文字中出现频率最高的10个单词(c语言)

    注:这次使用C语言做的这个程序.个别不懂的地方和算法部分是请教的其他同学,交流并吸收,所以收获颇多! 在程序中每一个地方我都做了注释,方便同学之间交流.也让老师容易看.程序也有很多不足的地方,但限于本 ...

  3. 使用PHP的strstr()函数来统计一段字符串中元音字母的个数(区分大小写)

    <?php/**练习:统计一段字符串中所有元音字母的个数(区分大小写)*/$str='This is a test file.'; //原始字符串echo $str.'<br>'; ...

  4. OpenJudge计算概论-单词倒排【把句子内单词的顺序翻转】

    /*================================================== 单词倒排 总时间限制: 1000ms 内存限制: 65536kB 描述 编写程序,读入一段英文 ...

  5. 实验:输入一篇英文新闻,以“#”结束,统计其中a-z这26个字母各出现的次数和总字符个数。(不区分大小写)

    代码如下: #include <iostream> using namespace std; int main() { char ch; char s_letter[26]={'a','b ...

  6. 程序一 用记事本建立文件src.dat,其中存放若干字符。编写程序,从文件src.dat中读取数据,统计其中的大写字母、小写字母、数字、其它字符的个数,并将这些数据写入到文件test.dat中。

    用记事本建立文件src.dat,其中存放若干字符.编写程序,从文件src.dat中读取数据,统计其中的大写字母.小写字母.数字.其它字符的个数,并将这些数据写入到文件test.dat中. #inclu ...

  7. 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 ...

  8. 三道习题(1、将单词表中由相同字母组成的单词归成一类,每类单词按照单词的首字母排序,并按 #每类中第一个单词字典序由大到小排列输出各个类别。 #输入格式:按字典序由小到大输入若干个单词,每个单词占一行,以end结束输入。)

    #coding=gbk ''' 1.将单词表中由相同字母组成的单词归成一类,每类单词按照单词的首字母排序,并按 #每类中第一个单词字典序由大到小排列输出各个类别. #输入格式:按字典序由小到大输入若干 ...

  9. C++统计一段文字中各单词出现的频率

    #include <iostream> using namespace std; /* run this program using the console pauser or add y ...

随机推荐

  1. 51Nod - 1179

    给出N个正整数,找出N个数两两之间最大公约数的最大值.例如:N = 4,4个数为:9 15 25 16,两两之间最大公约数的最大值是15同25的最大公约数5.   Input第1行:一个数N,表示输入 ...

  2. vue父子组件生命周期函数执行顺序

    vue父组件加载和销毁执行最后一个钩子函数之前先执行一遍子组件的钩子: 1.加载 父:beforecreate-created-beforeMount-(子:beforecreate-created- ...

  3. rem.js的用法及在浏览器端的适配

    首先介绍下自己,我是从后端转前端,对于前端的见识还不深望各位全当一个新手自述....... 随着移动设配的更新换代,市场上涌现了大量的非主流设备分辨率,比如华为手机...... 更新换代快的大前提下自 ...

  4. GreenPlum 大数据平台--web监控

    一,安装web监控界面 01,准备 下载greenplum cc包,>> 解压缩 02,安装前配置 vim /greenplum/data/master/gpseg-/pg_hba.con ...

  5. Docker原理(开发技术分享转发)

    Docker原理Docker是啥Docker是一个程序运行.测试.交付的开放平台,Docker被设计为能够使你快速地交付应用.在Docker中,你可以将你的程序分为不同的 基础部分,对于每一个基础部分 ...

  6. codeigniter读取数据库的公共配置并全局缓存的实现方案

    引言 学习CodeIgniter大概有几天了.从第一天了解后,对CI情有独钟,比较符合我的风格.其实一直以来对框架这块不太敏感.自己长时间的开发,也有一套自己的开发风格和习惯.但是这年头,你说你不会框 ...

  7. The Java serialization algorithm revealed---reference

    Serialization is the process of saving an object's state to a sequence of bytes; deserialization is ...

  8. [转]EntityFramework中常用的数据修改方式

    本文转自:http://blog.csdn.net/itmaxin/article/details/47662151 上一篇文章里提到了 EntityFramework中常用的数据删除方式,那么修改对 ...

  9. C# .net页面乱码

    可在web.config中设置 <globalization requestEncoding="utf-8" responseEncoding="utf-8&quo ...

  10. 融云会话界面导航上移-使用IQKeyboardManager

    关于IQKeyBoardManager挤出导航栏的解决方案 方法一: 写在前面 虽然修改后能解决导航栏被挤出去的问题,但是就目前来看是有副作用的,写这篇文章就是想大家来一起讨论,毕竟键盘处理还是比较头 ...