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 列表(List)操作方法详解
Mar 11 Python
python中快速进行多个字符替换的方法小结
Dec 15 Python
解决python爬虫中有中文的url问题
May 11 Python
基于Django URL传参 FORM表单传数据 get post的用法实例
May 28 Python
Windows10下Tensorflow2.0 安装及环境配置教程(图文)
Nov 21 Python
解决springboot yml配置 logging.level 报错问题
Feb 21 Python
python实现拼接图片
Mar 23 Python
Python分类测试代码实例汇总
Jul 23 Python
Python3爬虫中识别图形验证码的实例讲解
Jul 30 Python
python爬取网易云音乐热歌榜实例代码
Aug 07 Python
Python常遇到的错误和异常
Nov 02 Python
python 实现图片特效处理
Apr 03 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
windows下升级PHP到5.3.3的过程及注意事项
2010/10/12 PHP
PHP SEO优化之URL优化方法
2011/04/21 PHP
php数组函数序列之array_values() 获取数组元素值的函数与方法
2011/10/30 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
PHP图片处理之图片背景、画布操作
2014/11/19 PHP
thinkPHP实现MemCache分布式缓存功能
2016/03/23 PHP
非常经典的PHP文件上传类分享
2016/05/15 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
windows系统php环境安装swoole具体步骤
2021/03/04 PHP
JavaScript 类似flash效果的立体图片浏览器
2010/02/08 Javascript
关于setInterval、setTimeout在jQuery中的使用注意事项
2011/09/28 Javascript
用jQuery模拟页面加载进度条的实现代码
2011/12/19 Javascript
关于extjs treepanel复选框选中父节点与子节点的问题
2013/04/02 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
2015/01/20 Javascript
jQuery插件Skippr实现焦点图幻灯片特效
2015/04/12 Javascript
node中间层实现文件上传功能
2018/06/11 Javascript
详解swipe使用及竖屏页面滚动方法
2018/06/28 Javascript
nodejs提示:cross-device link not permitted, rename错误的解决方法
2019/06/10 NodeJs
详解一些适用于Node.js的命名约定
2019/12/08 Javascript
在Python中使用matplotlib模块绘制数据图的示例
2015/05/04 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
2018/06/13 Python
详解Python中的测试工具
2019/06/09 Python
tensorflow 20:搭网络,导出模型,运行模型的实例
2020/05/26 Python
python连接mysql有哪些方法
2020/06/24 Python
PyCharm2019 安装和配置教程详解附激活码
2020/07/31 Python
中国专业的综合网上购物商城:京东
2016/08/02 全球购物
舞蹈教育学专业推荐信
2013/11/27 职场文书
高一地理教学反思
2014/01/18 职场文书
庆祝教师节活动方案
2014/01/31 职场文书
社区居务公开实施方案
2014/03/27 职场文书
《宿建德江》教学反思
2014/04/23 职场文书
企业宣传标语
2014/06/09 职场文书
交通安全横幅标语
2014/10/07 职场文书
电子商务实训报告总结
2014/11/05 职场文书
十佳少年事迹材料
2014/12/25 职场文书
物业项目经理岗位职责
2015/04/01 职场文书