#40python 统计四级单词词频

#40python 统计四级单词词频

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

  1. 成果展现
  2. 第一步寻找四级真题
  3. 第二步分析文字
  4. 文字拆分并排序
  5. 文字写入文件
  6. 总代码

碎碎念

代码主要靠百度边查边写
为了可以更好地展示 代码的生成过程,(主要是懒)
做业的完成主要靠百度,基本上是用啥查啥
(有同窗问我题,说为啥..我说百度上有,便说我敷衍,百度上真的有,说的很清楚,比我讲的更高效,更系统,遇到这种状况我也是没办法了o(╥﹏╥)o)python

我也很想给解释清楚,可是无奈我也是菜的抠脚,只能干着急,写写博客来锻炼一下本身。。函数

学习路径有不少嘛学习

 


因此我赶忙写个博客,再问我题,我能够直接甩博客连接过去.简单高效
我也没有进行过多的修饰和完善代码。
这样可能更有助于像我这样的新手,看到代码实现的过程,
经过哪些博客的借鉴最终成型的。spa

不少时候博客也是没人会看的,可是写给本身看很重要,不写的时候感受学会了,一操做发现啥也不会,.net

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

因此写博客很重要滴!!!code

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

第一个回答是htm

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

不瞎写了,看今天的笔记

 

成果展现

 

 

最终统计单词结果
最终统计单词结果

 


第一步寻找四级真题

 

网上随便找的

 

四级真题
四级真题

 

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

 

复制成文本文件
复制成文本文件

 

 

整理成文本格式方便读取
整理成文本格式方便读取

 

第二步分析文字

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

 

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

 

想办法去除这些干扰因素

查阅资料 使用python提取中文数字和英文

 

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

 

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

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()函数 进行排序

资料 python 统计单词个数

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)

文字写入文件

参考资料 python的list变量保存为txt文本

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()
相关文章
相关标签/搜索