Python之字频统计(英文)

最近复习计算机二级python,才发现我python的基础差的可以TAT

各位大佬如果有什么python刷题网站介绍给我呗QAQ

不多说了,这就开始正文儿~

先说字频统计。

对于一片英语文章来说,实现字频统计大致需要以下步骤:

1.去除一些不需要的字符,尤其是特殊字符,比如换行符;

2.根据需要,自己决定将字母小写;

3.利用字典的特性字频统计;

4.将字典转换成列表后排序;

5.最后解构赋值,输出结果;

以一个题为例子:

注意,这题有个坑,我一开始错了,英文字符≠英文字母,所以只需要去除换行符就OK

引进arrogant.txt的内容,该txt的内容以字符串在source变量储存

sourcetxt=open("arrogant.txt",'r').read()

创建一个txt保存字频统计结果,注意,这里要用写模式才可以创建

fo=open("PY301-1.txt","w")

接着去除source的换行符(注意,replace方法是创建了新的字符串,对原字符串无影响,要覆盖掉)

sourcetxt=sourcetxt.replace("\n","")

开始统计:

letters=list(sourcetxt)

counts={}

for letter in letters:

        if letter in counts:

                counts[letter]=counts[letter]+1

        else:

                counts[letter]=1

这样所有的字频都已字典形式统计好了,接着转列表,为的是好排序

ls=list(counts.items())

在这个列表中,元素是元组,装着键和值

然后排序,降序

ls=ls.sort(key=lambda x:x[1],Reverse=True)

依照元素的第二个值来排

然后是新芝士,解构赋值

for i in range(len(ls)):

        letter,number=ls[i]

这个实际上是把元组元素拆开分别赋值给letter和number,一一对应

最后输出结果

        fo.write("{0}:{1}\n".format(letter,number))

别忘了保存:

fo.close()

搞定!全部代码是这样:(拆分的代码我是重写的,完整的代码略有不同,为了原题符合要求)

sourcetxt=open("arrogant.txt","r").read()
fo=open("PY301-1.txt","w")
sourcetxt=sourcetxt.replace("\n","")
letters=list(sourcetxt)
d={}
for letter in letters:
    if letter in d:
        d[letter]=d[letter]+1
    else:
        d[letter]=1
ls =list(d.items())
for i in range(len(ls)):
    letter,number=ls[i]
    fo.write("{0:}:{1:}\n".format(letter,number))
fo.close()

如果有任何问题,烦请大佬赐教,不胜感激,毕竟我的python真的很菜,希望快点能好起来wwwww

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值