是否曾想知道一种快速的方法来告知某些文档所关注的内容? 它的主要主题是什么? 让我给你这个简单的把戏。 列出文档中提到的唯一单词,然后检查每个单词被提及了多少次(频率)。 通过这种方式,您可以了解文档的主要内容。 但这手动操作并不容易,所以我们需要一些自动化的过程,不是吗?

是的,自动化过程将使这一过程变得更加容易。 让我们看看如何在文本文件中列出不同的唯一单词,并使用Python检查每个单词的出现频率。

测试文件

在本教程中,我们将使用test.txt作为测试文件。 继续下载它,但是不要打开它! 让我们做一个小游戏。 该测试文件中的文本来自我在Envato Tuts +的其中一篇教程。 根据单词的出现频率,让我们猜出该文本是从我的哪个教程中提取的。

让游戏开始吧!

常用表达

由于我们要在游戏中应用模式,因此我们需要使用正则表达式(regex)。 如果“正则表达式”是您的新名词,那么这是Wikipedia的一个很好的定义:

定义搜索模式的字符序列,主要用于与字符串进行模式匹配或字符串匹配(即类似“查找和替换”的操作)。 这个概念出现于1950年代,当时美国数学家Stephen Kleene将正规语言的描述形式化,并与Unix文本处理实用程序ed(编辑器)和grep(过滤器)共同使用。

如果您想在继续学习本教程之前进一步了解正则表达式,可以查看我的其他教程《 Python中的正则表达式》 ,然后再次回来继续本教程。

建立程序

让我们逐步开发这款游戏。 我们要做的第一件事是将文本文件存储在字符串变量中。

document_text = open('test.txt', 'r')
text_string = document_text.read()

现在,为了使我们的正则表达式更容易应用,让我们使用lower()函数将文档中的所有字母变成小写字母,如下所示:

text_string = document_text.read().lower()

让我们写一个正则表达式,它将返回字符数在[3-15]范围内的所有单词。 从3开始,将有助于避免我们可能不想对它们的频率进行计数的单词,例如ifofin 等等,而长度大于15单词可能不是正确的单词。 这种模式的正则表达式如下所示:

\b[a-z]{3,15}\b

\b单词边界有关 。 有关单词边界的更多信息,可以查看本教程 。

上面的正则表达式可以编写如下:

match_pattern = re.search(r'\b[a-z]{3,15}\b', text_string)

由于我们要遍历文档中的多个单词,因此可以使用findall函数:

返回string中的pattern的所有非重叠匹配项,作为字符串列表。 从左到右扫描该字符串 ,并以找到的顺序返回匹配项。 如果模式中存在一个或多个组,则返回一个组列表;否则,返回一个列表。 如果模式包含多个组,则这将是一个元组列表。 空匹配项将包括在结果中,除非它们碰到另一个匹配项的开头。

在这一点上,我们希望找到文档中每个单词的出现频率。 此处使用的合适概念是Python的Dictionaries ,因为我们需要key-value对,其中keyword ,并且value表示出现在文档中的频率单词。

假设我们声明了一个空的字典frequency = { } ,则上段如下所示:

for word in match_pattern:count = frequency.get(word,0)frequency[word] = count + 1

现在,我们可以使用以下命令查看密钥:

frequency_list = frequency.keys()

最后,为了获得单词及其频率(出现在文本文件中的次数),我们可以执行以下操作:

for words in frequency_list:print words, frequency[words]

让我们在下一节中将程序放在一起,看看输出是什么样子。

放在一起

在逐步讨论了程序之后,现在让我们看一下程序的外观:

import re
import string
frequency = {}
document_text = open('test.txt', 'r')
text_string = document_text.read().lower()
match_pattern = re.findall(r'\b[a-z]{3,15}\b', text_string)for word in match_pattern:count = frequency.get(word,0)frequency[word] = count + 1frequency_list = frequency.keys()for words in frequency_list:print words, frequency[words]

如果您运行该程序,则应该得到如下内容:


让我们回到我们的游戏。 通过频率一词,您认为测试文件(包含我其他Python教程的内容)在谈论什么?

(提示:以最大频率检查单词)。

翻译自: https://code.tutsplus.com/tutorials/counting-word-frequency-in-a-file-using-python--cms-25965

使用Python计算文件中的单词频率相关推荐

  1. python统计文件中每个单词出现的次数_Python统计单词出现的次数

    题目: 统计一个文件中每个单词出现的次数,列出出现频率最多的5个单词. 前言: 这道题在实际应用场景中使用比较广泛,比如统计历年来四六级考试中出现的高频词汇,记得李笑来就利用他的编程技能出版过一本背单 ...

  2. python统计文件中每个单词出现的次数_python统计文本中每个单词出现的次数

    .python统计文本中每个单词出现的次数: #coding=utf-8 __author__ = 'zcg' import collections import os with open('abc. ...

  3. python提取英文单词 每行显示一个_使用python对文件中的单词进行提取

    由于需要使用一个纯单词组成的文件,在网上下载到了一个存放单词的文件,但是里面有中文的解释,那就需要做一下提取了. 文本的形式如下: 所见即所得,这个文本是有规律的,每个单词为一行,紧接着下一行便是单词 ...

  4. python计算文件中字母出现次数_python – 计算文本文件中字母的频率

    使用collections.Counter(): from collections import Counter with open(file) as f: c = Counter() for x i ...

  5. c语言去掉文件中重复单词,awk脚本 使用awk去掉重复的单词

    在水木社区的VIM版看到这样一个帖子,要求去掉文本中的重复单词.这个工作用VIM来完成有不太容易,但用awk来做就很简单. 发信人: lars (蓝天白云), 信区: VIM 标  题: 怎么去掉重复 ...

  6. 简单的MapReduce项目,计算文件中单词出现的次数

    简单的MapReduce项目,计算文件中单词出现的次数 计算文件中单词出现的次数,试题如下图 1.创建读取单词的文件tast,内容如下: hadoop core map reduce hiv hba ...

  7. 【附源码】用Python从文件中读取学生成绩,并计算最高分/最低分/平均分

    兄弟们, 今天咱们试试用Python从文件中读取学生成绩, 并计算最高分/最低分/平均分. 涉及知识点 文件读写 基础语法 字符串处理 循环遍历 代码展示 模块 import platform 定义获 ...

  8. 如何用Python从文件中读取学生成绩,并计算最高分/最低分/平均分(附源码)

    兄弟们, 今天咱们试试用Python从文件中读取学生成绩, 并计算最高分/最低分/平均分. 涉及知识点 文件读写 基础语法 字符串处理 循环遍历 代码展示 模块 import platform 定义获 ...

  9. 用Python从文件中读取学生成绩,并计算最高分/最低分/平均分

    兄弟们,今天咱们试试用Python从文件中读取学生成绩,并计算最高分/最低分/平均分. 涉及知识点 文件读写 基础语法 字符串处理 循环遍历 代码展示 模块 import platform 定义获取最 ...

最新文章

  1. 计算机编程书籍-笨办法学Python 3:基础篇+进阶篇
  2. 2020-11-11 C++函数后面加“:”的含义
  3. 这么详细的Python matplotlib底层原理浅析
  4. smartfoxserver 个人心得
  5. node.js项目应用
  6. python根据矩阵数值大小涂上不同深浅颜色
  7. Thrift框架使用C++的一个demo
  8. Could not resolve type alias ‘‘
  9. php生成一个500错误_Hyperf 发布 v2.0.1 版本 | 企业级的 PHP 微服务云原生协程框架...
  10. 微博认证:黄v怎么认证?(认证技巧分享)
  11. 首款搭载国产龙芯 CPU 的域名服务器发布
  12. 【人生苦短,我学 Python】基础篇——字典(Day10)
  13. Codeforces1538G Gift Set (三分)
  14. 饿了么开放平台接入(1)——开放平台注册与使用
  15. 邪恶的PLS-00103错误提示
  16. 【AAD Connect】05:通过AAD Connect疑难解答检查同步问题,以及根据提示如何解决问题(AD账户迁移到O365)
  17. 2022 届秋招已开放网申汇总(已收录 30+ 公司,持续更新中)
  18. 位与,位或,异或,取反
  19. 京东云智臻链开源两周年,JD Chain领跑国内自研区块链技术
  20. ❤️AI从入门到到精通❤️

热门文章

  1. 分割字符串的两种方法
  2. iframe跨域传值
  3. 用js求一张a4纸的厚度是0.104mm,珠穆朗玛峰是8848.43米,纸张折叠多少次超过珠穆朗玛峰?
  4. java面试题纠错——java基础
  5. Android Studio模拟器如何把语言设置为中文和设置中文输入法
  6. ORA-01849: hour must be between 1 and 12
  7. 【微信小程序开发学习篇】
  8. (收藏)强烈推荐几个学习数据结构和算法的网站和可视化工具
  9. 用户运营浅谈-我的AARRR模型
  10. 常用 Excel 公式