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 socket网络编程之粘包问题详解
Apr 28 Python
Numpy中的mask的使用
Jul 21 Python
python爬虫之urllib库常用方法用法总结大全
Nov 14 Python
python使用Plotly绘图工具绘制柱状图
Apr 01 Python
Pandas的read_csv函数参数分析详解
Jul 02 Python
python虚拟环境模块venv使用及示例
Mar 04 Python
Python填充任意颜色,不同算法时间差异分析说明
May 16 Python
在python下实现word2vec词向量训练与加载实例
Jun 09 Python
用python写一个带有gui界面的密码生成器
Nov 06 Python
详解python的xlwings库读写excel操作总结
Feb 26 Python
python百行代码实现汉服圈图片爬取
Nov 23 Python
python 判断字符串当中是否包含字符(str.contain)
Jun 01 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把网页保存为word文件的三种方法
2014/04/01 PHP
php从数组中随机选择若干不重复元素的方法
2015/03/14 PHP
PHP Warning: Module 'modulename' already loaded in问题解决办法
2015/03/16 PHP
PHP Trait功能与用法实例分析
2020/06/03 PHP
用JavaScript事件串连执行多个处理过程的方法
2007/03/09 Javascript
Jquery 选中表格一列并对表格排序实现原理
2012/12/15 Javascript
jQuery实现等比例缩放大图片让大图片自适应页面布局
2013/10/16 Javascript
js图片处理示例代码
2014/05/12 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
2015/03/23 Javascript
JS+DIV+CSS实现仿表单下拉列表效果
2015/08/18 Javascript
vue2.0结合Element实现select动态控制input禁用实例
2017/05/12 Javascript
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
vue element-ui之怎么封装一个自己的组件的详解
2019/05/20 Javascript
微信小程序登录态和检验注册过没的app.js写法
2019/05/22 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
2019/08/20 Javascript
Element-UI+Vue模式使用总结
2020/01/02 Javascript
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
2020/03/06 Javascript
[47:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python分割和拼接字符串
2013/11/01 Python
python将txt文件读入为np.array的方法
2018/10/30 Python
Python实现合并两个有序链表的方法示例
2019/01/31 Python
Django上使用数据可视化利器Bokeh解析
2019/07/31 Python
通过celery异步处理一个查询任务的完整代码
2019/11/19 Python
纯HTML+CSS3制作导航菜单(附源码)
2013/04/24 HTML / CSS
爱游人:Travelliker
2017/09/05 全球购物
印尼综合在线预订网站:Tiket.com(机票、酒店、火车、租车和娱乐)
2018/10/11 全球购物
某公司的.net工程师面试题笔试题
2013/11/22 面试题
优秀团队获奖感言
2014/02/19 职场文书
爱国口号
2014/06/19 职场文书
社区清明节活动总结
2014/07/04 职场文书
向女朋友道歉的话
2015/01/20 职场文书
嘉宾邀请函
2015/01/31 职场文书
《中国古代诗歌散文欣赏》高中语文教材
2019/08/20 职场文书
《中华上下五千年》读后感3篇
2019/11/29 职场文书
win11怎么用快捷键锁屏? windows11锁屏的几种方法
2021/11/21 数码科技
PostgreSQL之连接失败的问题及解决
2023/05/08 PostgreSQL