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 04 Python
详解Python函数可变参数定义及其参数传递方式
Aug 02 Python
Python对List中的元素排序的方法
Apr 01 Python
PyTorch上实现卷积神经网络CNN的方法
Apr 28 Python
Python发送邮件功能示例【使用QQ邮箱】
Dec 04 Python
pyqt5 删除layout中的所有widget方法
Jun 25 Python
Python中的wordcloud库安装问题及解决方法
May 27 Python
基于python SMTP实现自动发送邮件教程解析
Jun 02 Python
Python中如何添加自定义模块
Jun 09 Python
python如何实现word批量转HTML
Sep 30 Python
python基于tkinter制作无损音乐下载工具
Mar 29 Python
Pygame Event事件模块的详细示例
Nov 17 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+AJAX聊天程序[聊天室]提供下载
2007/07/21 PHP
选择PHP作为网站开发语言的原因分享
2012/01/03 PHP
Smarty中调用FCKeditor的方法
2014/10/27 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
2015/10/10 PHP
php登录超时检测功能实例详解
2017/03/21 PHP
php文件操作之文件写入字符串、数组的方法分析
2019/04/15 PHP
js动态加载以及确定加载完成的代码
2011/07/31 Javascript
用JSON做数据传输格式中的一些问题总结
2011/12/21 Javascript
javascript 事件处理、鼠标拖动效果实现方法详解
2012/05/11 Javascript
一样的table?不一样的table(可编辑状态table)
2012/09/19 Javascript
jquery全选/全不选/反选另一种实现方法(配合原生js)
2013/04/07 Javascript
一个简单的弹性返回顶部JS代码实现介绍
2013/06/09 Javascript
浅析jquery的js图表组件highcharts
2014/03/06 Javascript
jQuery操作JSON的CRUD用法实例
2015/02/25 Javascript
纯js实现手风琴效果代码
2020/04/17 Javascript
微信小程序 时间格式化(util.formatTime(new Date))详解
2016/11/16 Javascript
JavaScript中最常用的10种代码简写技巧总结
2017/06/28 Javascript
vue2.0实现音乐/视频播放进度条组件
2018/06/06 Javascript
说说如何利用 Node.js 代理解决跨域问题
2019/04/22 Javascript
taro开发微信小程序的实践
2019/05/21 Javascript
CountUp.js实现数字滚动增值效果
2019/10/17 Javascript
vue 实现websocket发送消息并实时接收消息
2019/12/09 Javascript
vue实现购物车选择功能
2020/01/10 Javascript
Python运行报错UnicodeDecodeError的解决方法
2016/06/07 Python
Python网络编程中urllib2模块的用法总结
2016/07/12 Python
Django代码性能优化与Pycharm Profile使用详解
2018/08/26 Python
pycharm中成功运行图片的配置教程
2018/10/28 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
2018/12/03 Python
CSS3旋转——彩色扇子兼容firefox浏览器
2013/06/04 HTML / CSS
html5 兼容IE6结构的实现代码
2012/05/14 HTML / CSS
英国床和浴室商场:Bed & Bath Emporium
2018/05/20 全球购物
怎样创建、运行java程序
2014/08/01 面试题
九年级政治教学反思
2014/02/06 职场文书
《春到梅花山》教学反思
2014/04/16 职场文书
公司环境卫生管理制度
2015/08/05 职场文书
先进个人事迹材料(2016推荐版)
2016/03/01 职场文书