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使用xmlrpc实例讲解
Dec 17 Python
解读Django框架中的低层次缓存API
Jul 24 Python
最大K个数问题的Python版解法总结
Jun 16 Python
python将ansible配置转为json格式实例代码
May 15 Python
轻量级的Web框架Flask 中模块化应用的实现
Sep 11 Python
python实现删除列表中某个元素的3种方法
Jan 15 Python
python对Excel的读取的示例代码
Feb 14 Python
开启Django博客的RSS功能的实现方法
Feb 17 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
Apr 07 Python
如何通过Python实现RabbitMQ延迟队列
Nov 28 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
Mar 03 Python
Python 全局空间和局部空间
Apr 06 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
JavaScript获取GridView选择的行内容
2009/04/14 Javascript
IE与firefox下Dhtml的一些区别小结
2009/12/02 Javascript
使用js如何实现全选与全不选
2013/12/30 Javascript
node.js中的path.resolve方法使用说明
2014/12/08 Javascript
JS HTML5实现拖拽移动列表效果
2020/08/27 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
2017/02/20 Javascript
bootstrap table动态加载数据示例代码
2017/03/25 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
2017/07/07 Javascript
纯js实现的积木(div层)拖动功能示例
2017/07/19 Javascript
详解http访问解析流程原理
2017/10/18 Javascript
基于jquery实现五星好评
2017/11/18 jQuery
Vue-cli Eslint在vscode里代码自动格式化的方法
2018/02/23 Javascript
vue 实现全选全不选的示例代码
2018/03/29 Javascript
nodejs更新package.json中的dependencies依赖到最新版本的方法
2018/10/10 NodeJs
Vue动画事件详解及过渡动画实例
2019/02/09 Javascript
vue通过video.js解决m3u8视频播放格式的方法
2019/07/30 Javascript
node省市区三级数据性能测评实例分析
2019/11/06 Javascript
Python中join和split用法实例
2015/04/14 Python
numpy中的高维数组转置实例
2018/04/17 Python
Django的用户模块与权限系统的示例代码
2019/07/24 Python
python 模拟创建seafile 目录操作示例
2019/09/26 Python
Python线程threading模块用法详解
2020/02/26 Python
Python判断三段线能否构成三角形的代码
2020/04/12 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
django中ImageField的使用详解
2020/12/21 Python
英国在线汽车和面包车零件商店:Car Parts 4 Less
2018/08/15 全球购物
历史学专业大学生找工作的自我评价
2013/10/16 职场文书
优秀学生自我鉴定范例
2013/12/18 职场文书
IT工程师岗位职责
2014/07/04 职场文书
四风问题个人对照检查材料
2014/09/26 职场文书
解除租房协议书
2014/12/03 职场文书
公司禁烟通知
2015/04/23 职场文书
2016秋季运动会前导词
2015/11/25 职场文书
2016党风廉政建设心得体会范文
2016/01/25 职场文书
股东合作协议书模板2篇
2019/11/05 职场文书
Python获取江苏疫情实时数据及爬虫分析
2021/08/02 Python