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 调用DLL操作抄表机
Jan 12 Python
Python中字符串的处理技巧分享
Sep 17 Python
Python基于sftp及rsa密匙实现远程拷贝文件的方法
Sep 21 Python
Python二叉树定义与遍历方法实例分析
May 25 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
Jul 27 Python
Python  Django 母版和继承解析
Aug 09 Python
Python面向对象魔法方法和单例模块代码实例
Mar 25 Python
Python如何自动获取目标网站最新通知
Jun 18 Python
Python 分布式缓存之Reids数据类型操作详解
Jun 24 Python
python类共享变量操作
Sep 03 Python
python更新数据库中某个字段的数据(方法详解)
Nov 18 Python
matplotlib更改窗口图标的方法示例
Feb 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
PHP的类 功能齐全的发送邮件类
2006/10/09 PHP
用PHP读取flv文件的播放时间长度
2009/09/03 PHP
解析php中array_merge与array+array的区别
2013/06/21 PHP
8个必备的PHP功能实例代码
2013/10/27 PHP
php中利用explode函数分割字符串到数组
2014/02/08 PHP
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
php数字每三位加逗号的功能函数
2015/10/22 PHP
PHP获取MySQL执行sql语句的查询时间方法
2018/08/21 PHP
php+js实现裁剪任意形状图片
2018/10/31 PHP
说说掌握JavaScript语言的思想前提想学习js的朋友可以看看
2009/04/01 Javascript
写出高效jquery代码的19条指南
2014/03/19 Javascript
Jquery实现地铁线路指示灯提示牌效果的方法
2015/03/02 Javascript
javascript格式化日期时间方法汇总
2015/06/19 Javascript
BootStrap的弹出框(Popover)支持鼠标移到弹出层上弹窗层不隐藏的原因及解决办法
2016/04/03 Javascript
BootStrap智能表单实战系列(八)表单配置json详解
2016/06/13 Javascript
正则表达式替换html元素属性的方法
2016/11/26 Javascript
微信小程序实现横向增长表格的方法
2018/07/24 Javascript
详解利用eventemitter2实现Vue组件通信
2019/11/04 Javascript
vue中重定向redirect:‘/index‘,不显示问题、跳转出错的完美解决
2020/09/28 Javascript
[01:14]DOTA2 7.22版本新增神杖效果展示(智力英雄篇)
2019/05/29 DOTA
Python中的getopt函数使用详解
2015/07/28 Python
Python入门之三角函数sin()函数实例详解
2017/11/08 Python
利用python修改json文件的value方法
2018/12/31 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
2019/09/07 Python
numpy ndarray 取出满足特定条件的某些行实例
2019/12/05 Python
使用Python第三方库pygame写个贪吃蛇小游戏
2020/03/06 Python
Python json转字典字符方法实例解析
2020/04/13 Python
parser.add_argument中的action使用
2020/04/20 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法
2020/07/21 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
2020/11/11 Python
CSS3的一个简单导航栏实现
2015/08/03 HTML / CSS
高三语文教学反思
2014/01/15 职场文书
在职员工证明书
2014/09/19 职场文书
违纪开除通知书
2015/04/25 职场文书
简短清晨问候语
2015/11/10 职场文书