Python 词频统计

Python 词频统计

大家好,又见面了,我是你们的朋友全栈君。

利用Python做一个词频统计

GitHub地址:FightingBob 【Give me a star , thanks.】

  • 词频统计

  对纯英语的文本文件【Eg: 瓦尔登湖(英文版).txt】的英文单词出现的次数进行统计,并记录起来

  • 代码实现

  •  1 import string
     2 from os import path
     3 with open('瓦尔登湖(英文版).txt','rb') as text1:
     4     words = [word.strip(string.punctuation).lower() for word in str(text1.read()).split()]
     5     words_index = set(words)
     6     count_dict = {index:words.count(index) for index in words_index}
     7     with open(path.dirname(__file__) + '/file1.txt','a+') as text2:
     8         text2.writelines('以下是词频统计的结果:' + '\n')
     9         for word in sorted(count_dict,key=lambda x:count_dict[x],reverse=True):
    10             text2.writelines('{}--{} times'.format(word,count_dict[word]) + '\n')
    11         text1.close()
    12         text2.close()

     

  • 代码解析  

    • 获取文件,以二进制格式打开文件,用于读取内容

      •   1 with open(‘瓦尔登湖(英文版).txt’,’rb’) as text1:

    • 获取单词列表

      • 先读取内容

        •   content = text1.read()
      • 再获取单词列表(使用split() 通过指定分隔符对字符串进行切片)

        •   words = content.split()
      • 单词大写改小写,去掉单词前后符号

        •   word,strip(string.punctuation).lower()
      • 去除重复的单词

        •   words_index = set(words)
    • 设置单词:单词次数的字典      

      •   count_dict = {index:words.count(index) for index in words_index}
    • 写入词频统计

      • 先创建文件,获取当前目录,并以追加写入的方式写入

        •   with open(path.dirname(__file__) + ‘/file1.txt’,’a+’) as text2:
      • 换行写入

        •   text2.writelines(‘以下是词频统计的结果:’ + ‘\n’)
      • 对单词进行排序,根据次数从大到小【key=lambda x:count_dict[x]以值排序】

        •   sorted(count_dict,key=lambda x:count_dict[x],reverse=True)
      • 换行写入词频

        •   text2.writelines(‘{}–{} times’.format(word,count_dict[word]) + ‘\n’)
      • 关闭资源

        •   text1.close()
        •   text2.close()

GitHub地址:FightingBob 【Give me a star , thanks.】          

 

转载于:https://www.cnblogs.com/littlebob/p/9189794.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107469.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 程序员必须了解的知识点——你搞懂mysql索引机制了吗?

    程序员必须了解的知识点——你搞懂mysql索引机制了吗?

    2020年11月20日
    311
  • 通俗理解逻辑删除和物理删除的区别「建议收藏」

    通俗理解逻辑删除和物理删除的区别「建议收藏」一:逻辑删除逻辑删除的本质是修改操作,所谓的逻辑删除其实并不是真正的删除,而是在表中将对应的是否删除标识(is_delete)或者说是状态字段(status)做修改操作。比如0是未删除,1是删除。在逻辑上数据是被删除的,但数据本身依然存在库中。对应的SQL语句:update表名setis_delete=1whereid=1;语句表示,在该表中将id为1的信息进行逻…

    2022年6月2日
    127
  • rc522命令表_linux驱动程序文件

    rc522命令表_linux驱动程序文件硬件平台:1主控:SMDKExynos4412POPS5M8767A2RFID模块:君盾集团提供的RC522模块3通信接口:SPI软件平台:AndroidICS&kernelversion3.0.15一,使能主控端SPI1硬件使能:从SMDK原理图上可以看到SPI0与I2C共用,SPI1已经连接到其它设备,SPI2未用,故这里选用SPI2。2软件使能:SMDKExyno…

    2022年9月15日
    0
  • mysql 客户端_推荐一个好用的mysql的客户端工具?

    MySQL作为一个非常流行的关系型数据库,客户端软件其实非常多,下面我简单介绍几个,感兴趣的朋友可以尝试一下:Navicat这是一个比较常用的MySQL客户端软件,界面简洁、功能强大,可以直接查看数据库目录结构,建库建表也非常容易,支持SQL脚本导入导出、数据备份恢复及建模设计等,对于日常管理和维护MySQL数据库来说,是一个非常不错的工具:DBeaver这是一个非常有名的通用数据库管理…

    2022年4月4日
    61
  • 数据建模与数仓建模_数仓建模的几种方式

    数据建模与数仓建模_数仓建模的几种方式数据模型是抽象描述现实世界的**一种工具和方法**,是通过抽象的实体及真实的实体之间**联系的形式**,来表示现实世界中事务的相互关系的一种映射(也就是说模型对应着显示世界的一组关系或者一个事物)在这里,数据模型表现的抽象的是实体和实体之间的关系,**通过对实体和实体之间关系的定义和描述,来表达实际的业务中具体的业务关系**。所以总结下来,数据模型是用来描述数据、组织数据和对数据进行操作,是对现实世界数据特征的描述。其实就像是函数一样,例如给你一批数据让你分析,这个时候最好的方式是能建立一个数学模型

    2025年6月6日
    0
  • iptables规则详解_iptables规则文件

    iptables规则详解_iptables规则文件利用ipset,使iptables可以利用一条规则匹配多条IP地址,提高iptables的匹配效率,降低防火墙的系统消耗。

    2022年10月6日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号