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中的__new__与__init__魔术方法理解笔记
Nov 08 Python
Python下的Softmax回归函数的实现方法(推荐)
Jan 26 Python
python selenium执行所有测试用例并生成报告的方法
Feb 13 Python
详解Python正则表达式re模块
Mar 19 Python
python机器人运动范围问题的解答
Apr 29 Python
简单了解python元组tuple相关原理
Dec 02 Python
Python 实现将数组/矩阵转换成Image类
Jan 09 Python
pyecharts动态轨迹图的实现示例
Apr 17 Python
Python自动化测试中yaml文件读取操作
Aug 20 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
Jan 06 Python
教你怎么用Python监控愉客行车程
Apr 29 Python
PYTHON使用Matplotlib去实现各种条形图的绘制
Mar 22 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
一个显示天气预报的程序
2006/10/09 PHP
php设计模式 Builder(建造者模式)
2011/06/26 PHP
ThinkPHP路由详解
2015/07/27 PHP
php实现表单多按钮提交action的处理方法
2015/10/24 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
PHP递归的三种常用方式
2019/02/28 PHP
理解Javascript_07_理解instanceof实现原理
2010/10/15 Javascript
js动态创建标签示例代码
2014/06/09 Javascript
Javascript字符串浏览器兼容问题分析
2014/12/01 Javascript
JavaScript弹出新窗口后向父窗口输出内容的方法
2015/04/06 Javascript
使用AOP改善javascript代码
2015/05/01 Javascript
window.onload与$(document).ready()的区别分析
2015/05/30 Javascript
浅析Node.js中的内存泄漏问题
2015/06/23 Javascript
JS之相等操作符详解
2016/09/13 Javascript
使用jquery如何获取时间
2016/10/13 Javascript
jquery实现折叠菜单效果【推荐】
2017/03/08 Javascript
微信小程序 MD5的方法详解及实例代码
2017/03/10 Javascript
nodejs基于WS模块实现WebSocket聊天功能的方法
2018/01/12 NodeJs
vue登录注册实例详解
2019/09/14 Javascript
VSCode插件安装完成后的配置(常用配置)
2020/08/24 Javascript
[02:09]DOTA2辉夜杯 EHOME夺冠举杯现场
2015/12/28 DOTA
Python中的字符串替换操作示例
2016/06/27 Python
python-opencv颜色提取分割方法
2018/12/08 Python
python3使用matplotlib绘制散点图
2019/03/19 Python
Python更新所有已安装包的操作
2020/02/13 Python
Python将字典转换为XML的方法
2020/08/01 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
世界上最好的帽子:Tilley
2016/11/27 全球购物
考博自荐信
2013/10/25 职场文书
初婚未育未抱养证明
2014/01/12 职场文书
大学生村官事迹材料
2014/01/21 职场文书
《狼》教学反思
2014/03/02 职场文书
颐和园英文导游词
2015/01/30 职场文书
垂直极限观后感
2015/06/08 职场文书
2019财务毕业实习报告
2019/06/27 职场文书
nginx 配置缓存
2022/05/11 Servers