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字符串的encode与decode研究心得乱码问题解决方法
Mar 23 Python
pygame学习笔记(2):画点的三种方法和动画实例
Apr 15 Python
分析Python读取文件时的路径问题
Feb 11 Python
Python定义一个跨越多行的字符串的多种方法小结
Jul 19 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
Feb 18 Python
Django如何使用第三方服务发送电子邮件
Aug 14 Python
python使用协程实现并发操作的方法详解
Dec 27 Python
DjangoWeb使用Datatable进行后端分页的实现
May 18 Python
Python内置异常类型全面汇总
May 28 Python
Python 解决相对路径问题:&quot;No such file or directory&quot;
Jun 05 Python
Python3实现建造者模式的示例代码
Jun 28 Python
Python页面加载的等待方式总结
Feb 28 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&amp;mysql(六)
2006/10/09 PHP
PHP中的命名空间相关概念浅析
2015/01/22 PHP
PHP常见过waf webshell以及最简单的检测方法
2019/05/21 PHP
jquery+json 通用三级联动下拉列表
2010/04/19 Javascript
遍历DOM对象内的元素属性示例代码
2014/02/08 Javascript
jquery禁用右键单击功能屏蔽F5刷新
2014/03/17 Javascript
AngularJS学习笔记之基本指令(init、repeat)
2015/06/16 Javascript
AngularJS向后端ASP.NET API控制器上传文件
2016/02/03 Javascript
JS中artdialog弹出框控件之提交表单思路详解
2016/04/18 Javascript
javascript 正则表达式去空行方法
2017/01/24 Javascript
react-native ListView下拉刷新上拉加载实现代码
2017/08/03 Javascript
微信小程序使用progress组件实现显示进度功能【附源码下载】
2017/12/12 Javascript
jQuery pjax 应用简单示例
2018/09/20 jQuery
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
2019/02/02 NodeJs
VUE写一个简单的表格实例
2019/08/06 Javascript
转换layUI的数据表格中的日期格式方法
2019/09/19 Javascript
原生js拖拽实现图形伸缩效果
2020/02/10 Javascript
vue中使用带隐藏文本信息的图片、图片水印的方法
2020/04/24 Javascript
js+css3实现炫酷时钟
2020/08/18 Javascript
Python3爬虫学习之MySQL数据库存储爬取的信息详解
2018/12/12 Python
Python Flask框架模板操作实例分析
2019/05/03 Python
python机器学习库scikit-learn:SVR的基本应用
2019/06/26 Python
Python计算一个点到所有点的欧式距离实现方法
2019/07/04 Python
解决Atom安装Hydrogen无法运行python3的问题
2019/08/28 Python
python global关键字的用法详解
2019/09/05 Python
Pytorch中膨胀卷积的用法详解
2020/01/07 Python
tensorflow实现二维平面模拟三维数据教程
2020/02/11 Python
详解torch.Tensor的4种乘法
2020/09/03 Python
详解python内置模块urllib
2020/09/09 Python
纯CSS3实现的井字棋游戏
2020/11/25 HTML / CSS
C#里面如何倒序排列一个数组的元素?
2013/06/21 面试题
排查整治工作方案
2014/06/09 职场文书
2014领导班子四风问题查摆思想汇报
2014/09/13 职场文书
搞笑的爱情检讨书
2014/10/01 职场文书
2015年预防青少年违法犯罪工作总结
2015/05/22 职场文书
HTML基本元素标签介绍
2022/02/28 HTML / CSS