Python 合并多个TXT文件并统计词频的实现
作者:alpha 的博客 发布时间:2023-01-09 12:16:08
标签:Python,TXT,统计词频
需求是:针对三篇英文文章进行分析,计算出现次数最多的 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))
效果如下图:
另一种更简单的统计词频的方法:
# 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)]
来源:https://alpha2016.github.io/2019/08/22/Python-合并多个TXT文件并统计词频/
0
投稿
猜你喜欢
- 本文主要介绍Python3.6及TensorFlow的安装和配置流程。一、Python官网下载自己电脑和系统对应的Python安装包。&nb
- 在html中关于select元素的问题在很多地方都提出过,而在前段时间的项目中,刚好遇到了关于select元素的两个小问题,这里进行一下总结
- 如下所示:# x = ['c b a',"e d f"]# y = []# for i in x:# f
- 本文介绍了保护MySQL数据库中重要数据受外部攻击的六个注意事项,以减少面临的风险。与自动的数据库备份不同,对系统管理员来说,保护数据免受未
- heapq 模块提供了堆算法。heapq是一种子节点和父节点排序的树形数据结构。这个模块提供heap[k] <= heap[2*k+1
- 在最开始的时候所有的斐波那契代码都是使用递归的方式来写的,递归有很多的缺点,执行效率低下,浪费资源,还有可能会造成栈溢出,而递归的程序的优点
- 本文实例讲述了Python基于回溯法子集树模板解决野人与传教士问题。分享给大家供大家参考,具体如下:问题在河的左岸有N个传教士、N个野人和一
- 调用opencv库,将yuv图像转为jpg图像。代码如下:# define _CRT_SECURE_NO_WARNINGS#include
- jquery作为一款高质量的框架被大多web开发者所推崇。jquery也的确是一款伟大的产品,在实际开发中明显提高了效率。但是任何产品并不是
- 分页功能在每个网站都是必要的,对于分页来说,其实就是根据用户的输入计算出应该显示在页面上的数据在数据库表中的起始位置。确定分页需求:1. 每
- 2008北京奥运会块到了,下面的js代码将告诉你,离奥运会开幕还要多少天!让我们一起迎接这美好的时刻。相关文章推荐:各种北京2008奥运会倒
- 2020.2.20 更新日志:本文的初衷是因为安装anaconda的时候你并不知道会包含哪个版本的python,因此我制作了下表如果你使用的
- 前言PyEMD是经验模态分解 (EMD)及其变体的Python实现,EMD最流行的扩展之一是集成经验模态分解 (EEMD),它利用了噪声辅助
- 解包在英文里叫做 Unpacking,就是将容器里面的元素逐个取出来放在其它地方,好比你父母去菜市场买了一袋苹果回来分别发给家里的每个成员,
- python类class定义及其初始化定义类,功能,属性一般类名首字母大写class Calculator:#名字和价格是属性
- 1. 引言在使用Python的时候,通常会出现如下场景:array = [1, 2, 3, 3, 2, 1, 0, 2]获取array中元素
- 前言:通过@语句调用一个函数去给另一个函数增加或修改一些功能的语法规则称之为Python装饰器。下面通过一个小案例来简单的理解什么是装饰器。
- 今天,在完成一个小的python习题,习题的主要内容是读取一个帮助模块,并保存到本地文件。知道是用pydoc进行模块的读取,但是在windo
- django-pipeline 是一个 Django 下非常方便的静态资源管理 app,尤其是 1.2 版本之后,利用 djan
- SQL(结构化查询语言)就是负责与ANSI维护的数据库交互的标准。最新的版本是SQL-99,还有一个新标准SQL-200n尚处于制定过程中。