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的迭代器和生成器使用实例
Jan 14 Python
Python常用内置函数总结
Feb 08 Python
python使用itchat实现手机控制电脑
Feb 22 Python
python实现自动获取IP并发送到邮箱
Dec 26 Python
Python基于opencv实现的简单画板功能示例
Mar 04 Python
python中PS 图像调整算法原理之亮度调整
Jun 28 Python
python调用接口的4种方式代码实例
Nov 19 Python
解决更改AUTH_USER_MODEL后出现的问题
May 14 Python
python 代码运行时间获取方式详解
Sep 18 Python
python中slice参数过长的处理方法及实例
Dec 15 Python
教你怎么用Python监控愉客行车程
Apr 29 Python
PyTorch 如何设置随机数种子使结果可复现
May 12 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面向对象全攻略 (九)访问类型
2009/09/30 PHP
php array_values 返回数组的所有值详解及实例
2016/11/12 PHP
javascript学习随笔(使用window和frame)的技巧
2007/03/08 Javascript
对javascript的一点点认识总结《javascript高级程序设计》读书笔记
2011/11/30 Javascript
JQuery学习笔录 简单的JQuery
2012/04/09 Javascript
jquery的$getjson调用并获取远程的JSON字符串问题
2012/12/10 Javascript
Jquery 复选框取值兼容FF和IE8(测试有效)
2013/10/29 Javascript
IE8下String的Trim()方法失效的解决方法
2013/11/08 Javascript
js中对象的声明方式以及数组的一些用法示例
2013/12/11 Javascript
js控制table合并具体实现
2014/02/20 Javascript
javascript实现按回车键切换焦点
2015/02/09 Javascript
JavaScript的原型继承详解
2015/02/15 Javascript
使用jquery+CSS3实现仿windows10开始菜单的下拉导航菜单特效
2015/09/24 Javascript
jquery实现删除一个元素后面的所有元素功能
2015/12/21 Javascript
AngularJS ng-controller 指令简单实例
2016/08/01 Javascript
JavaScript利用正则表达式替换字符串中的内容
2016/12/12 Javascript
angular2实现统一的http请求头方法
2018/08/13 Javascript
Vuex 使用 v-model 配合 state的方法
2018/11/13 Javascript
layer弹出层取消遮罩的方法
2019/09/25 Javascript
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
微信小程序入门之指南针
2020/10/22 Javascript
解决vue-pdf查看pdf文件及打印乱码的问题
2020/11/04 Javascript
Django框架的使用教程路由请求响应的方法
2018/07/03 Python
分享一个pycharm专业版安装的永久使用方法
2019/09/24 Python
Python调用Windows命令打印文件
2020/02/07 Python
Python3开发环境搭建详细教程
2020/06/18 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
html5使用canvas压缩图片的示例代码
2018/09/11 HTML / CSS
爱尔兰电脑、家电和家具购物网站:Buy It Direct
2019/07/09 全球购物
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
2015/09/17 面试题
英语求职信范文
2014/05/23 职场文书
先进工作者事迹材料
2014/12/23 职场文书
单位租车协议书
2015/01/29 职场文书
新闻发布会新闻稿
2015/07/17 职场文书
《坐井观天》教学反思
2016/02/18 职场文书
总结三种用 Python 作为小程序后端的方式
2022/05/02 Python