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 文件,如果沒有則創(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 curl2pyreqs 生成接口腳本實(shí)戰(zhàn)教程
這篇文章主要介紹了python curl2pyreqs 生成接口腳本實(shí)戰(zhàn)教程,首先下載 curl2pyreqs 庫(kù),打開調(diào)試模式,在Network這里獲取接口的cURL,需要的朋友可以參考下2023-10-10
opencv實(shí)踐項(xiàng)目之圖像拼接詳細(xì)步驟
OpenCV的應(yīng)用領(lǐng)域非常廣泛,包括圖像拼接、圖像降噪、產(chǎn)品質(zhì)檢、人機(jī)交互、人臉識(shí)別、動(dòng)作識(shí)別、動(dòng)作跟蹤、無(wú)人駕駛等,下面這篇文章主要給大家介紹了關(guān)于opencv實(shí)踐項(xiàng)目之圖像拼接的相關(guān)資料,需要的朋友可以參考下2023-05-05
django模板結(jié)構(gòu)優(yōu)化的方法
這篇文章主要介紹了django模板結(jié)構(gòu)優(yōu)化的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-02-02
pytz格式化北京時(shí)間多出6分鐘問(wèn)題的解決方法
這篇文章主要給大家介紹了關(guān)于pytz格式化北京時(shí)間多出6分鐘問(wèn)題的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
Python多叉樹的構(gòu)造及取出節(jié)點(diǎn)數(shù)據(jù)(treelib)的方法
今天小編就為大家分享一篇Python多叉樹的構(gòu)造及取出節(jié)點(diǎn)數(shù)據(jù)(treelib)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08
Python爬取動(dòng)態(tài)網(wǎng)頁(yè)中圖片的完整實(shí)例
這篇文章主要給大家介紹了關(guān)于Python爬取動(dòng)態(tài)網(wǎng)頁(yè)中圖片的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03

