Python 合并多个TXT文件并统计词频的实现


Posted in Python onAugust 23, 2019

需求是:针对三篇英文文章进行分析,计算出现次数最多的 10 个单词

逻辑很清晰简单,不算难, 使用 python 读取多个 txt 文件,将文件的内容写入新的 txt 中,然后对新 txt 文件进行词频统计,得到最终结果。

代码如下:(在Windows 10,Python 3.7.4环境下运行通过)

# coding=utf-8

import re
import os

# 获取源文件夹的路径下的所有文件
sourceFileDir = 'D:\\Python\\txt\\'
filenames = os.listdir(sourceFileDir)

# 打开当前目录下的 result.txt 文件,如果没有则创建
# 文件也可以是其他类型的格式,如 result.js
file = open('D:\\Python\\result.txt', 'w')

# 遍历文件
for filename in filenames:
 filepath = sourceFileDir+'\\'+filename
 # 遍历单个文件,读取行数,写入内容
 for line in open(filepath):
  file.writelines(line)
  file.write('\n')

# 关闭文件
file.close()


# 获取单词函数定义
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.切割为列表格式,'' 兼容符号错误情况,只保留英文单词
txtArr = re.findall('[a-z\''A-Z]+', hamletTxt)

# 3.去除所有遍历统计
counts = {}
for word in txtArr:
 # 去掉一些常见无价值词
 forbinArr = ['a.', 'the', 'a', 'i']
 if word not in forbinArr:
  counts[word] = counts.get(word, 0) + 1

# 4.转换格式,方便打印,将字典转换为列表,次数按从大到小排序
countsList = list(counts.items())
countsList.sort(key=lambda x: x[1], reverse=True)

# 5. 输出结果
for i in range(10):
 word, count = countsList[i]
 print('{0:<10}{1:>5}'.format(word, count))

效果如下图:

Python 合并多个TXT文件并统计词频的实现

另一种更简单的统计词频的方法:

# coding=utf-8
from collections import Counter

# words 为读取到的结果 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)]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 常用 PEP8 编码规范详解
Jan 22 Python
基于Django contrib Comments 评论模块(详解)
Dec 08 Python
django admin添加数据自动记录user到表中的实现方法
Jan 05 Python
浅谈Django学习migrate和makemigrations的差别
Jan 18 Python
Django1.9 加载通过ImageField上传的图片方法
May 25 Python
python频繁写入文件时提速的方法
Jun 26 Python
Python算法中的时间复杂度问题
Nov 19 Python
利用python实现AR教程
Nov 20 Python
使用 Python 清理收藏夹里已失效的网站
Dec 03 Python
python绘制动态曲线教程
Feb 24 Python
python 穷举指定长度的密码例子
Apr 02 Python
如何基于python实现年会抽奖工具
Oct 20 Python
Python 调用 Windows API COM 新法
Aug 22 #Python
详解Python文件修改的两种方式
Aug 22 #Python
详解python中的生成器、迭代器、闭包、装饰器
Aug 22 #Python
python支付宝支付示例详解
Aug 22 #Python
关于python3中setup.py小概念解析
Aug 22 #Python
python3 requests库文件上传与下载实现详解
Aug 22 #Python
python3使用print打印带颜色的字符串代码实例
Aug 22 #Python
You might like
php设计模式之命令模式的应用详解
2013/05/21 PHP
基于PHP遍历数组的方法汇总分析
2013/06/08 PHP
PHP+AJAX实现投票功能的方法
2015/09/28 PHP
php使用GD2绘制几何图形示例
2017/02/15 PHP
Jquery取得iframe下内容的方法
2013/11/18 Javascript
JavaScript实现关键字高亮功能
2014/11/12 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
2015/01/13 Javascript
详解addEventListener的三个参数之useCapture
2015/03/16 Javascript
浅谈angular.js中实现双向绑定的方法$watch $digest $apply
2015/10/14 Javascript
jQuery解析json数据实例分析
2015/11/24 Javascript
Angular.js回顾ng-app和ng-model使用技巧
2016/04/26 Javascript
jQuery实现摸拟alert提示框
2016/05/22 Javascript
js弹出窗口返回值的简单实例
2016/05/28 Javascript
详解js的事件代理(委托)
2016/12/22 Javascript
vue loadmore组件上拉加载更多功能示例代码
2017/07/19 Javascript
Angular模板表单校验方法详解
2017/08/11 Javascript
JavaScript屏蔽Backspace键的实现代码
2017/11/02 Javascript
Bootstrap实现翻页效果
2017/11/27 Javascript
用React-Native+Mobx做一个迷你水果商城APP(附源码)
2017/12/25 Javascript
小试SVG之新手小白入门教程
2019/01/08 Javascript
javascript设计模式 ? 组合模式原理与应用实例分析
2020/04/14 Javascript
Vue如何实现验证码输入交互
2020/12/07 Vue.js
PyQt5每天必学之单行文本框
2018/04/19 Python
Python接口开发实现步骤详解
2020/04/26 Python
如何使用Cython对python代码进行加密
2020/07/08 Python
HTML5标签使用方法详解
2015/11/27 HTML / CSS
全球最大的在线旅游公司:Expedia
2017/11/16 全球购物
法国在线药房:DoctiPharma
2020/10/21 全球购物
物流管理专业求职信
2014/05/29 职场文书
商务英语专业求职信
2014/06/26 职场文书
小学竞选班长演讲稿
2014/09/09 职场文书
考试作弊万能检讨书
2014/10/19 职场文书
入党自传范文2015
2015/06/26 职场文书
22句经典语录:送给优柔寡断和胡思乱想的朋友们
2019/12/13 职场文书
springboot利用redis、Redisson处理并发问题的操作
2021/06/18 Java/Android
vue3中provide && inject的使用
2021/07/01 Vue.js