python单词词频字典_#40python 统计四级单词词频

#40python 统计四级单词词频

Python词云统计词库

2019年05月21日 23时36分54秒

碎碎念

代码主要靠百度边查边写

为了能够更好地展现 代码的生成过程,(主要是懒)

作业的完成主要靠百度,基本上是用啥查啥

(有同学问我题,说为啥..我说百度上有,便说我敷衍,百度上真的有,说的很清楚,比我讲的更高效,更系统,遇到这种情况我也是没办法了o(╥﹏╥)o)

我也很想给解释清楚,但是无奈我也是菜的抠脚,只能干着急,写写博客来锻炼一下自己。。

学习路径有很多嘛

1623669-20190521234744662-1183624217.png

所以我赶紧写个博客,再问我题,我可以直接甩博客链接过去.简单高效

我也没有进行过多的修饰和完善代码。

这样可能更有助于像我这样的新手,看到代码实现的过程,

通过哪些博客的借鉴最终成型的。

很多时候博客也是没人会看的,但是写给自己看很重要,不写的时候感觉学会了,一操作发现啥也不会,

好不容易,做上来了,写个博客,发现啥也说不清楚

所以写博客很重要滴!!!

我在知乎上看到过一个问题就是,为啥有人一直坚持写博客?

第一个回答是

即使最后没有人为你鼓掌,也要优雅地谢幕,感谢自己的认真付出。

1623669-20190521235000366-1796989519.png

不瞎写了,看今天的笔记

成果展示

1558451995989.png

最终统计单词结果

第一步寻找四级真题

网上随便找的

1558452058829.png

四级真题

网上版本多样,不能统一,所以我直接暴力,复制文本,粘贴到文本格式TXT保存方便读取

1558452101752.png

复制成文本文件

1558452083932.png

整理成文本格式方便读取

第二步分析文字

文字中很明显可以看出,有中文,有标点,怎么去掉呢?

1558452257290.png

文字标点数字进行了分词的干扰

想办法去除这些干扰因素

1558452428256.png

将汉字和数字标点进行替换即可

我构建了下列函数,读取文件并返回去除干扰字符后的字符串

def F(a):

f=open(a,'r')

st=f.read()

s1 = re.sub(u"([^\u0041-\u005a\u0061-\u007a])"," ",st)

return s1

f.close()

紧接着 发现每段文字,第一个单词会是大写的,所以也要考虑大小写的问题,加上一句代码进行大小写转换

s=s.lower()

文字拆分并排序

1.所有干扰字符替换成空格,并且本身单词与单词之间以空格进行分隔,所以直接使用空格拆分即可

引用string 库里的split()函数

2.拆分后为一个列表,遍历列表统计单词出现个数

3.使用字典类型进行统计,key存储单词,velue存储单词个数

4.存储完后用sort()函数 进行排序

s=s.lower()

r=s.split()

words=r

counts={}

for word in words:

counts[word]=counts.get(word,0)+1

items=list(counts.items())

items.sort(key=lambda x:x[1],reverse=True)

文字写入文件

f=open('最终.txt','w')

sw='四级单词词频统计\n'

for i in range(len(items)):

f.write(items[i][0]+'\t'+str(items[i][1])+'\n')

f.close()

总代码

import string

import re

def F(a):

f=open(a,'r')

st=f.read()

s1 = re.sub(u"([^\u0041-\u005a\u0061-\u007a])"," ",st)

return s1

f.close()

f=open('17-12.txt','r')

st=f.read()

s = re.sub(u"([^\u0041-\u005a\u0061-\u007a])"," ",st)

f.close()

f=open('17-12-1.txt','r')

st=f.read()

s1 = re.sub(u"([^\u0041-\u005a\u0061-\u007a])"," ",st)

s=s+s1

f.close()

f=open('17-12-2.txt','r')

st=f.read()

s1 = re.sub(u"([^\u0041-\u005a\u0061-\u007a])"," ",st)

s=s+s1

f.close()

s+=F('16-12-1.txt')

s+=F('16-6-2.txt')

s+=F('15-12-1.txt')

s=s.lower()

r=s.split()

words=r

counts={}

for word in words:

counts[word]=counts.get(word,0)+1

items=list(counts.items())

items.sort(key=lambda x:x[1],reverse=True)

f=open('最终.txt','w')

sw='四级单词词频统计\n'

for i in range(len(items)):

f.write(items[i][0]+'\t'+str(items[i][1])+'\n')

f.close()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值