答粉丝问|统计文本中字母的出现次数及频率

答粉丝问|统计文本中字母的出现次数及频率,第1张

概述1前言近日,小编收到一粉丝的留言,想要知道如何用python统计文本中英文字母的出现次数及频率。所以特写此篇文章来为这个粉丝解答疑惑。图1粉丝留言2问题解决这个问题可以分为两个部分,一是用python实现对文本文件的 *** 作,二是python对字符串的计数 *** 作。为了方便大家理解,小编

1 前言

近日,小编收到一粉丝的留言,想要知道如何用python统计文本中英文字母的出现次数及频率。所以特写此篇文章来为这个粉丝解答疑惑。

图1 粉丝留言

2 问题解决

这个问题可以分为两个部分,一是用python实现对文本文件的 *** 作,二是python对字符串的计数 *** 作。为了方便大家理解,小编将先说第二部分再说第一部分。

2.1用python统计给定字符串中的英文字母出现的次数及频率。

统计字符串中的英文字母出现次数的方法有很多种,小编就给大家介绍比较简单的一种,容易理解些。

“统计”。要统计一个字符的出现次数,在python中可以直接用count()函数,比如要统计的字符为i,字符串为text_file,其用法见代码。

count = text_file.count(i) #统计该字母在原文本中的出现次数

通过这行代码,已经可以实现统计想要的字符在字符串中的出现次数了,然后它出现的频率就直接可以用出现次数除以总字符数。接下来就要统计多个英文字母了。

“过滤”。要统计多个字母,就需要不停的执行第一步,所以就需要使用for循环,i就在目标字符串中遍历。因为只需要统计英文字母,所以也可以用python自带的判断函数isAlpha()。还有为了在遍历的时候不重复统计出现过的字符,所以就需要对目标字符串做一个处理,用python的set()函数就可以将字符串转为集合(自动过滤重复字符)。详见代码。

text_file_set = sorted(set(text_file)) #将文本排序并返回去掉重复字符的集合

for i in text_file_set: #遍历得到的文本集合

    if i.isAlpha(): #判断是否是英文字母

        count = text_file.count(i) #统计该字母在原文本中的出现次数

        frequency = count/text_count #计算该字母出现频率

        print("%s:%d;%.4f" % (i,count,frequency)) #输出要得到的(频率保留四位小数)

2.2python实现对文本文件的 *** 作。

通过以上步骤,已经实现了对给定字符串的字母统计了,给定方式就是自己输入,当然自己输入很麻烦,就算粘贴复制也嫌麻烦,所以就需要用到python的内置函数open()来帮助打开目标文本文件。这里小编先给大家简单介绍以下open()函数的用法。

open(‘file.name’,’mode’,......)

引号后面还有很多参数,这里就不详细讲了,只需要记住常用的mode类型及功能。

w:以写方式打开

a:以追加方式打开

r:以只读模式打开

r+:以读写模式打开

w+:以读写模式打开

rb:以二进制读模式打开

wb:以二进制写模式打开

ab:以二进制追加模式打开

rb+:以二进制读写模式打开

wb+:以二进制读写模式打开

ab+:以二进制追加模式打开

然后运用这行代码就可以打开目标文本文件。

text = open('test.txt','r') #打开目标文本

注意:这里的test.txt是和代码同路径下的,如果不是,就需要输入完整的路径名称。

打开文件后,还不能直接使用,因为它的类型不是str,所以需要再加一行代码将text转化为可 *** 作的字符串类型(str)。

text_file = text.read() #读取目标文本(转化为字符串类型)

然后可以用type函数看看是不是str类型。

print(type(text),type(text_file))

<class '_io.TextIOWrapper'> <class 'str'>

可以发现文本已经由原来的txt类型转为了str类型。接下来就可以将代码合起来了,然后这个问题就算是解决了。

3 完整代码

text = open('test.txt','r') #打开目标文本

text_file = text.read() #读取目标文本(转化为字符串类型)

text_count = len(text_file) #返回文本中字符总数

text_file_set = sorted(set(text_file)) #将文本排序并返回去掉重复字符的集合

for i in text_file_set: #遍历得到的文本集合

    if i.isAlpha(): #判断是否是英文字母

        count = text_file.count(i) #统计该字母在原文本中的出现次数

        frequency = count/text_count #计算该字母出现频率

        print("%s:%d;%.4f" % (i,count,frequency)) #输出要得到的(频率保留四位小数)

看下部分运行效果:

图2 原文本中的内容

图3 部分运行效果

4 总结

这个问题本身并不难,代码也很简单,小编写得这么详细是为了大家好理解,希望大家以后不管遇到什么问题都可以用这种一步一步思考的方式去解决它。

END

主  编   |   王文星

责  编   |   江来洪

 where2go 团队

@H_404_183@

       

总结

以上是内存溢出为你收集整理的答粉丝问|统计文本中字母的出现次数及频率全部内容,希望文章能够帮你解决答粉丝问|统计文本中字母的出现次数及频率所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1183587.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存