如何利用python实现词频统计功能

作者:周鱼仔 时间:2021-05-01 16:38:21 

功能要求

这是我们老师的作业 代码中都有注释 要求 词频统计软件:

1)从文本中读入数据:(文件的输入输出)

2)不区分大小写,去除特殊字符。

3) 统计单词 例如:about :10 并统计总共多少单词

4)对单词排序。出现次数

5)输出词频最高的10个单词和次数

6)把统计结果存入文本

方法如下

1.文件的读取,区分大小写,去除特殊字符


import re

def getword():
    # 读取文件
    f=open('read.txt','r',encoding='utf-8')
    # 将大写转化成小写
    word=f.read().lower()
    # 关闭文件
    f.close()
    #利用正则除去特殊字符   |\符+
    list=re.split('\s+|\,+|\.+|\!+|\:+|\?+|\;+|\(+|\)+|\-+|\_+|\=+|\++|\“+|\、+|\/+|\{+|\}+|\”+|\:+|\。+|\“+|\[+|\]+|\【+|\】+|\—+|\%+|\"+',word)
    # 遍历列表 去除列表中的空格
    i = 0
    while i < len(list):
         if list[i] == '':
              list.remove(list[i])
              i -= 1
         i += 1

# for a in list:
    #      if a == "":
    #         list.remove(a)
   #用for循环的话如果存在多个空字符串 其列表会随时发生变化,导致无法正常删除空字符串 所以在使用for…in循环遍历列表时,最好不要对元素进行增删操作

#  对于others'优化 如果最后一个字符是‘就将'其去掉
    for i in range(len(list)):
         l=list[i]
         if list[i][-1] == "'":
              list[i] = list[i][:-1]
    return list

2. 统计,排序


from getfilewords import getword

def statistics():
   dict={}  #定义一个空的字典,在后面的运算中逐步添加数据
   words=getword()
   for word in words: #遍历整个列表
       if word in dict.keys():  #判断当前单词是否已经存在 dict.keys()是已存进字典中的单词
           # 补充:keys() 方法用于返回字典中的所有键;
           # values() 方法用于返回字典中所有键对应的值;
           #详情见Test1
           dict[word]=dict[word]+1  #在当前单词的个数上加 1
       else:
           dict[word]=1  #当前单词第一次出现时 会把单词写入dict字典里 格式为 ‘单词'=1
#排序
   w_order=sorted(dict.items(),key=lambda x:x[1],reverse=True)
# print(dict.items())
# dict.items()返回的是列表
# 按字典集合中,每一个元组的第二个元素排列。
# sorted会对dict.items()这个list进行遍历,把list中的每一个元素,也就是每一个tuple()当做x传入匿名函数lambda x:x[1],函数返回值为x[1]
# reverse属性True为降序 False为升序
   return w_order #返回排序后的列表

3.结果写入文本


from WordStatistics import statistics
def writefile():
   w_order=statistics()
   f = open('result.txt', 'w',encoding='utf-8')
   print("文章单词总个数:",+len(getword()),file=f)
   print("文章单词总个数:", +len(getword()))

# 写入文件
   print("词频最高的10个单词和次数",file=f)
   print("词频最高的10个单词和次数")

w_order10=w_order[:10]#将列表的前十位提取并且遍历 输出key(单词)和values(次数)
   for key,values in w_order10:
       print(key,':',values,file=f)
       print(key, ':', values)

#遍历列表中的所有数据
   print("统计结果",file=f)
   for key,values in w_order:
       print(key,':',values,file=f)
   f.close()#关闭文件

4.程序入口


import os

from writefile import writefile

print("词频统计软件")
print("正在统计中。。。")
print("统计成功,结果保存到result.txt")
writefile()
print("程序运行结束")
os.system("pause")

5.运行截图 这是需要统计的文本

如何利用python实现词频统计功能

运行程序

如何利用python实现词频统计功能

运行结果

如何利用python实现词频统计功能

来源:https://blog.csdn.net/qq_46538289/article/details/120802236

标签:python,词频,统计
0
投稿

猜你喜欢

  • 如何使用SQL Server中的客户端配置工具

    2009-01-13 14:05:00
  • Python中GIL的使用详解

    2022-02-08 13:36:30
  • Python算法中的时间复杂度问题

    2021-03-20 04:52:50
  • Python pandas DataFrame基础运算及空值填充详解

    2022-01-01 22:19:49
  • 使用Keras画神经网络准确性图教程

    2021-02-17 03:20:28
  • Python快速优雅的批量修改Word文档样式

    2022-09-23 19:28:22
  • jRaiser与jQuery的冲突问题

    2010-07-27 12:36:00
  • 动网论坛验证码改进 加法验证码(ASPJpeg版)

    2011-04-10 10:44:00
  • python 中Arduino串口传输数据到电脑并保存至excel表格

    2022-05-17 05:41:11
  • PHP中合并数组的常见方法分享

    2023-05-25 12:02:48
  • Mac在python3环境下安装virtualwrapper遇到的问题及解决方法

    2021-06-22 17:32:38
  • python中heapq堆排算法的实现

    2022-10-13 23:11:40
  • 如何将Python字符串转换为JSON的实现方法

    2022-07-11 02:58:37
  • 理解JavaScript作用域链

    2010-01-23 11:31:00
  • Jupyter加载文件的实现方法

    2021-11-12 23:16:15
  • Python中排序函数sorted()函数的使用实例

    2021-08-01 09:52:02
  • Pandas.DataFrame转置的实现 <font color=red>原创</font>

    2022-03-02 03:07:34
  • 解决Python requests库编码 socks5代理的问题

    2023-01-29 13:27:28
  • 基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)

    2022-09-21 05:14:57
  • 浅谈Python处理json字符串为什么不建议使用eval()

    2023-08-17 06:56:34
  • asp之家 网络编程 m.aspxhome.com