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
Python实现求两个csv文件交集的方法
Sep 06 Python
Python matplotlib画图实例之绘制拥有彩条的图表
Dec 28 Python
Python基于scipy实现信号滤波功能
May 08 Python
python re.sub()替换正则的匹配内容方法
Jul 22 Python
Pycharm最新激活码2019(推荐)
Dec 31 Python
Python Tornado批量上传图片并显示功能
Mar 26 Python
Python celery原理及运行流程解析
Jun 13 Python
python实现在线翻译
Jun 18 Python
Python调用百度OCR实现图片文字识别的示例代码
Jul 17 Python
Python用户自定义异常的实现
Dec 25 Python
python spilt()分隔字符串的实现示例
May 21 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 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF
2016/02/19 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
2016/07/09 PHP
js对象之JS入门之Array对象操作小结
2011/01/09 Javascript
引用 js在IE与FF之间的区别详细解析
2013/11/20 Javascript
javascript数组遍历for与for in区别详解
2014/12/04 Javascript
JS仿淘宝实现的简单滑动门效果代码
2015/10/14 Javascript
js简单判断移动端系统的方法
2016/02/25 Javascript
完美JQuery图片切换效果的简单实现
2016/07/21 Javascript
jquery实现图片切换代码
2016/10/13 Javascript
jQuery扇形定时器插件pietimer使用方法详解
2017/07/18 jQuery
json2.js 入门教程之使用方法与实例分析
2017/09/14 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
微信小程序个人中心的列表控件实现代码
2020/04/26 Javascript
解决Vue + Echarts 使用markLine标线(precision精度问题)
2020/07/20 Javascript
[38:42]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第二场 11.05
2020/11/05 DOTA
python和bash统计CPU利用率的方法
2015/07/10 Python
Python中time模块和datetime模块的用法示例
2016/02/28 Python
Python3中类、模块、错误与异常、文件的简易教程
2017/11/20 Python
Python爬虫实现“盗取”微信好友信息的方法分析
2019/09/16 Python
Python基于Dlib的人脸识别系统的实现
2020/02/26 Python
解决django 向mysql中写入中文字符出错的问题
2020/05/18 Python
Python Web项目Cherrypy使用方法镜像
2020/11/05 Python
html5模拟平抛运动(模拟小球平抛运动过程)
2013/07/25 HTML / CSS
HTML5离线应用与客户端存储的实现
2018/05/03 HTML / CSS
详解canvas绘制网络字体几种方法
2019/08/27 HTML / CSS
Styleonme中文网:韩国高档人气品牌
2017/06/21 全球购物
音乐专业自荐信
2014/02/07 职场文书
八一建军节感言
2014/02/28 职场文书
党员活动日总结
2014/05/05 职场文书
节约用水标语
2014/06/11 职场文书
国际金融专业自荐信
2014/07/05 职场文书
交通事故死亡赔偿协议书
2014/12/03 职场文书
2015年领导干部廉洁自律工作总结
2015/05/26 职场文书
可可西里观后感
2015/06/08 职场文书
宿舍卫生管理制度
2015/08/05 职场文书
一文解答什么是MySQL的回表
2022/08/05 MySQL