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使用线程封装的一个简单定时器类实例
May 16 Python
Django内容增加富文本功能的实例
Oct 17 Python
Python实现的简单线性回归算法实例分析
Dec 26 Python
Python字典对象实现原理详解
Jul 01 Python
python每天定时运行某程序代码
Aug 16 Python
python爬虫 Pyppeteer使用方法解析
Sep 28 Python
python 单线程和异步协程工作方式解析
Sep 28 Python
python数据分析工具之 matplotlib详解
Apr 09 Python
python用TensorFlow做图像识别的实现
Apr 21 Python
解决python虚拟环境切换无效的问题
Apr 30 Python
python中id函数运行方式
Jul 03 Python
Python自动化办公Excel模块openpyxl原理及用法解析
Nov 05 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
使用sockets:从新闻组中获取文章(二)
2006/10/09 PHP
新手配置 PHP 调试环境(IIS+PHP+MYSQL)
2007/01/10 PHP
YII中assets的使用示例
2014/07/31 PHP
php使用mysqli向数据库添加数据的方法
2015/03/20 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
laravel 实现上传图片到本地和前台访问示例
2019/10/21 PHP
JS实现浏览器菜单命令
2006/09/05 Javascript
JavaScript高级程序设计(第3版)学习笔记3 js简单数据类型
2012/10/11 Javascript
验证码按回车不变解决方法
2013/03/29 Javascript
JS实现点击按钮自动增加一个单元格的方法
2015/03/09 Javascript
JQ实现新浪游戏首页幻灯片
2015/07/29 Javascript
js添加千分位的实现代码(超简单)
2016/08/01 Javascript
微信小程序 scroll-view隐藏滚动条详解
2017/01/16 Javascript
JavaScript实现计算圆周率到小数点后100位的方法示例
2018/05/08 Javascript
基于打包工具Webpack进行项目开发实例
2018/05/29 Javascript
大转盘抽奖小程序版 转盘抽奖网页版
2020/04/16 Javascript
实用的Vue开发技巧
2019/05/30 Javascript
了解JavaScript中let语句
2019/05/30 Javascript
Ant Design Vue 添加区分中英文的长度校验功能
2020/01/21 Javascript
Vue+Element自定义纵向表格表头教程
2020/10/26 Javascript
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
Python3.2中Print函数用法实例详解
2015/05/19 Python
讲解Python中fileno()方法的使用
2015/05/24 Python
在PyCharm中三步完成PyPy解释器的配置的方法
2018/10/29 Python
python3实现猜数字游戏
2020/12/07 Python
pyinstaller还原python代码过程图解
2020/01/08 Python
Python 防止死锁的方法
2020/07/29 Python
一文读懂Python 枚举
2020/08/25 Python
Python实现给PDF添加水印的方法
2021/01/25 Python
TripAdvisor德国:全球领先的旅游网站
2017/12/07 全球购物
JAVA高级程序员面试题
2013/09/06 面试题
学生个人的自我评价分享
2013/11/05 职场文书
迎八一活动主题
2014/01/31 职场文书
中级会计职业生涯规划书
2014/03/01 职场文书
2015年清明节网上祭英烈留言寄语
2015/03/04 职场文书
mongodb数据库迁移变更的解决方案
2021/09/04 MongoDB