Python在文件中对字母、单词频度统计

news2024/11/15 19:38:22

读入给定的文本文件“hamlet.txt”,编写两个函数分别实现:

1) 统计所有字母的出现频度,依据频度从高到低,显示前5个字母及其频度,同时把结果写入文件“hamlet_字母频度.txt”。

2) 统计所有单词的出现频度,依据频度从高到低,显示前10个单词及其频度,同时把结果写入文件“hamlet_单词频度.txt”。

import re
from collections import Counter
f=open("hamlet.txt", "r", encoding="utf-8")
line = f.readlines()
f.close()
txt = ""
for i in line:
    txt += i
txt=txt.lower()
def Read01():
    letters = ""
    for i in txt:
        if i.islower():
            letters+=i
    letterf = Counter(letters)
    letterf = sorted(letterf.items(), key=lambda x:x[1], reverse=True)
    of = open("./hamlet_字母频度.txt", 'w')
    print(letterf, file=of)
    of.close()
    print("字母频度:")
    counts = 0
    for i in letterf:
        counts += 1
        if counts > 5:
            break
        print(i)

def Read02():
    words = re.split("[,, |\n]",txt)
    words_ = []
    for w in words:
        if re.match(r'[A-Za-z0-9_]', w):
            words_.append(w)
    wordf = Counter(words_)
    wordf = sorted(wordf.items(), key=lambda x: x[1], reverse=True)
    of = open("./hamlet_单词频度.txt", 'w')
    print(wordf, file=of)
    of.close()
    print("单词频度:")
    counts=0
    for i in wordf:
        counts+=1
        if counts > 10:
            break
        print(i)
Read01()
print("*"*50)
Read02()


字母频度统计数据:

 

单词频度统计数据:

 

运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/907254.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构作业——哈夫曼树

/*【基本要求】 (1) 从文件中读出一篇英文文章,包含字母和空格等字符。 (2) 统计各个字符出现的频度。 (3) 根据出现的频度,为每个出现的字符建立一个哈夫曼编码,并输出。…

Open-Cascade 编译全过程-以及注意事项

1.从Github上下载 该源码库; https://github.com/Open-Cascade-SAS/OCCT 2.再从下面网站,下载需要的地方库文件: 从这个地址下载需要的文件; 3rd party Components | Open CASCADE Technology 3.使用cmak gui进行构建编译; 关键地方以及坑所在得点: 如果其编…

打破壁垒,实现高效的跨部门协作与沟通

在如今复杂多变的商业环境下,企业间需要跨越多个部门的壁垒进行协作及沟通以完成企业目标。尽管如此,许多企业仍然面临协作过程中出现不必要的误解、重复、延迟和错失机会等问题。为此,现代技术提供了一些解决方案,其中最为成功的…

【Terraform学习】使用 Terraform 创建Amazon VPC(Terraform-AWS最佳实战学习)

使用 Terraform 创建Amazon VPC 实验步骤 前提条件 安装 Terraform: 地址 下载仓库代码模版 本实验代码位于 task_vpc 文件夹中。 变量文件 variables.tf 在上面的代码中,您将声明,aws_access_key,aws_secret_key和 区域变量…

视频云存储/安防监控EasyCVR视频汇聚平台如何通过角色权限自行分配功能模块?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、…

永久设置pip指定国内镜像源(windows内)

1.首先列出国内四个镜像源网站: 一、清华源 https://pypi.tuna.tsinghua.edu.cn/simple/ 二、阿里源 https://mirrors.aliyun.com/pypi/simple 三、中科大源 https://pypi.mirrors.ustc.edu.cn/simple/ 四、豆瓣源 http://pypi.douban.com/simple/ 2.一般下载所需要…

什么是SaaS、PaaS、aPaaS、iPaaS、IaaS,一文讲透

在数字化的带动下,各行业对云服务的需求进入快速增长期。 SaaS、PaaS、aPaaS、iPaaS、IaaS…… 这些词经常出现,那么他们分别是什么意思?又有什么区别?小帆带大家一起来看看~ SaaS SaaS,Software as a Service&…

数字乡镇综合解决方案[59页PPT]

导读:原文《数字乡镇综合解决方案[59页PPT]》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 喜欢文章,您可以关注评论转发本文,了…

医疗设备管理软件哪家好?医院设备全生命周期管理要怎么做?

随着医学技术的不断进步,医疗设备变得越来越先进,越来越复杂。因此,医疗设备的管理也变得越来越重要。传统的医疗设备管理方式存在很多问题,比如设备数据难统计、报修方式难统一、巡检维保难规范等。为了解决这些问题,…

无畏限制:项目管理中的狠人哲学

引言 在项目管理的领域中,我们经常面临各种限制条件,从时间、资源到预算。但是,真正的“狠人”不会被这些困难所困扰。他们坚信一个简单的哲学:不论遇到什么问题,都要直面它,攻克它。这种直接、简单、无畏…

【二叉树构建与遍历2】后序遍历+中序遍历构建一个二叉树并输出先序遍历 C++实现

思路: 先来一个例子: 后序遍历序列为:XEDGAF 中序遍历序列为:XDEFAG 要根据后序序列和中序序列确定这个二叉树,通用的步骤为: 1.根据后序序列的最后一位确定这棵树的根; 2.在中序序列中找…

电脑上安装,多版本node

手上有一个vue3的项目,sass配置如下图所示: 安装了Python3.10和node 16.14.0,项目能正常install 跟run。 因工作需要,收上有一个vue2的项目,sass配置如下图所示: 执行npm intsall 的时候一直报Python2找不…

无论是小说、公文还是新闻稿,爱校对都是你的最佳选择

在这个数字化的时代,写作已经渗透到我们生活的方方面面。从小说家到政府官员,再到新闻记者,每个人都需要确保他们的文本内容无瑕疵、逻辑清晰。这就是“爱校对”进入舞台的地方。它不仅仅是一个校对工具,更是每个写作者都不可或缺…

Day13-面向对象编程

Day13-面向对象编程 一 回顾 变量,数组,对象都是容器,都可以用来存储数据 let n = 10 let arr = [3,5,7] let stu = {name:"张恒",age:18,sex:"女"}二 面向对象思想 面向过程:将开发的步骤按照顺序一步一步往下执行,直到程序结束 面向对象:将项目中…

springboot+docker实现微服务的小例子

【任务】: 创建一个服务A:service_hello 创建一个服务B:service_name service_name负责提供一个api接口返回一个name字符串。 service_hello负责从这个接口获取name字符串,然后进行一个字符串拼接,在后面加一个hello&…

冠达管理:8月新股赚嗨了!创业板年内第二高价股来了,本周3股齐发

创业板年内第二高价股来了。 本周(8月21日到8月25日)总共有3只新股申购。其间,创业板新股儒竞科技定价99.57元/股,是年内创业板第二高价股,将于周一申购,中一签需缴款4.98万元。 8月以来,上市新…

Docker容器无法启动 Cannot find /usr/local/tomcat/bin/setclasspath.sh

报错信息如下 解决办法 权限不够 加上--privileged 获取最大权限 docker run --privileged --name lenglianerqi -p 9266:8080 -v /opt/docker/lenglianerqi/webapps:/usr/local/tomcat/webapps/ -v /opt/docker/lenglianerqi/webapps/userfile:/usr/local/tomcat/webapps/u…

三洋、松下、索尼命运为何不同 ?一个主品牌竞争优势决定长期胜出

在当前高度竞争的市场环境中,尽管都是链主品牌,主品牌竞争优势的强弱将决定它们在竞争中取得成功的可能性。这一点可以从三洋、松下、索尼三个品牌的发展历程中得到印证。三者中在主品牌认知层面,索尼是科技品牌、松下是国家品牌、三洋是国民…

视频汇聚/视频云存储/视频监控管理平台EasyCVR提升网络稳定小tips来啦!

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

银河麒麟服务器v10 sp1 .Net6.0 上传文件错误 access to the path is denied

上一篇:银河麒麟服务器v10 sp1 部署.Net6.0 http https_csdn_aspnet的博客-CSDN博客 .NET 6之前,在Linux服务器上安装 libgdiplus 即可解决,libgdiplus是System.Drawing.Common原生端跨平台实现的主要提供者,是开源mono项目。地址…