Python 合并多個(gè)TXT文件并統(tǒng)計(jì)詞頻的實(shí)現(xiàn)
需求是:針對(duì)三篇英文文章進(jìn)行分析,計(jì)算出現(xiàn)次數(shù)最多的 10 個(gè)單詞
邏輯很清晰簡(jiǎn)單,不算難, 使用 python 讀取多個(gè) txt 文件,將文件的內(nèi)容寫入新的 txt 中,然后對(duì)新 txt 文件進(jìn)行詞頻統(tǒng)計(jì),得到最終結(jié)果。
代碼如下:(在Windows 10,Python 3.7.4環(huán)境下運(yùn)行通過(guò))
# coding=utf-8 import re import os # 獲取源文件夾的路徑下的所有文件 sourceFileDir = 'D:\\Python\\txt\\' filenames = os.listdir(sourceFileDir) # 打開當(dāng)前目錄下的 result.txt 文件,如果沒(méi)有則創(chuàng)建 # 文件也可以是其他類型的格式,如 result.js file = open('D:\\Python\\result.txt', 'w') # 遍歷文件 for filename in filenames: filepath = sourceFileDir+'\\'+filename # 遍歷單個(gè)文件,讀取行數(shù),寫入內(nèi)容 for line in open(filepath): file.writelines(line) file.write('\n') # 關(guān)閉文件 file.close() # 獲取單詞函數(shù)定義 def getTxt(): txt = open('result.txt').read() txt = txt.lower() txt = txt.replace(''', '\'') # !"@#$%^&*()+,-./:;<=>?@[\\]_`~{|} for ch in '!"'@#$%^&*()+,-/:;<=>?@[\\]_`~{|}': txt.replace(ch, ' ') return txt # 1.獲取單詞 hamletTxt = getTxt() # 2.切割為列表格式,'' 兼容符號(hào)錯(cuò)誤情況,只保留英文單詞 txtArr = re.findall('[a-z\''A-Z]+', hamletTxt) # 3.去除所有遍歷統(tǒng)計(jì) counts = {} for word in txtArr: # 去掉一些常見無(wú)價(jià)值詞 forbinArr = ['a.', 'the', 'a', 'i'] if word not in forbinArr: counts[word] = counts.get(word, 0) + 1 # 4.轉(zhuǎn)換格式,方便打印,將字典轉(zhuǎn)換為列表,次數(shù)按從大到小排序 countsList = list(counts.items()) countsList.sort(key=lambda x: x[1], reverse=True) # 5. 輸出結(jié)果 for i in range(10): word, count = countsList[i] print('{0:<10}{1:>5}'.format(word, count))
效果如下圖:
另一種更簡(jiǎn)單的統(tǒng)計(jì)詞頻的方法:
# coding=utf-8 from collections import Counter # words 為讀取到的結(jié)果 list words = ['a', 'b' ,'a', 'c', 'v', '4', ',', 'w', 'y', 'y', 'u', 'y', 'r', 't', 'w'] wordCounter = Counter(words) print(wordCounter.most_common(10)) # output: [('y', 3), ('a', 2), ('w', 2), ('b', 1), ('c', 1), ('v', 1), ('4', 1), (',', 1), ('u', 1), ('r', 1)]
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解python如何提取瀏覽器中保存的網(wǎng)站登錄用戶名密碼
很多瀏覽器都貼心地提供了保存用戶密碼功能,用戶一旦開啟,就不需要每次都輸入用戶名、密碼,非常方便,作為python腳本,能否拿到用戶提前保存在瀏覽器中的用戶名密碼,用以自動(dòng)登錄呢,下面我們就來(lái)看看吧2023-08-08python入門課程第四講之內(nèi)置數(shù)據(jù)類型有哪些
這篇文章主要介紹了python入門課程第四講之內(nèi)置數(shù)據(jù)類型有哪些?本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09python語(yǔ)言元素知識(shí)點(diǎn)詳解
在本篇文章中小編給大家分享了關(guān)于python語(yǔ)言元素的相關(guān)知識(shí)點(diǎn)以及實(shí)例代碼,需要的朋友們跟著學(xué)習(xí)下。2019-05-05opencv實(shí)現(xiàn)靜態(tài)手勢(shì)識(shí)別 opencv實(shí)現(xiàn)剪刀石頭布游戲
這篇文章主要為大家詳細(xì)介紹了opencv實(shí)現(xiàn)靜態(tài)手勢(shì)識(shí)別,opencv實(shí)現(xiàn)剪刀石頭布游戲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01使用Python的time庫(kù)格式化時(shí)間的方法
通過(guò)使用Python的time庫(kù),我們可以方便地進(jìn)行時(shí)間處理、格式化、解析和計(jì)算等操作,本文介紹了time庫(kù)的一些常見功能和使用方法,包括格式化時(shí)間、解析時(shí)間戳、獲取當(dāng)前時(shí)間、計(jì)算時(shí)間差等,感興趣的朋友一起看看吧2023-11-11Python3實(shí)現(xiàn)并發(fā)檢驗(yàn)代理池地址的方法
這篇文章主要介紹了Python3實(shí)現(xiàn)并發(fā)檢驗(yàn)代理池地址的方法,實(shí)例分析了Python3基于線程的代理檢驗(yàn)操作相關(guān)技巧,需要的朋友可以參考下2016-09-09