#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()
相關文章
相關標籤/搜索