当前位置: 首页 > 面试题库 >

如何在python中计算文件中的单词频率

卫高谊
2023-03-14
问题内容

我有一个具有以下格式的.txt文件,

C
V
EH
A
IRQ
C
C
H
IRG
V

尽管显然它要大得多,但实际上是这样。基本上,我试图总结每个单独字符串在文件中的次数(每个字母/字符串在单独的一行上,因此从技术上讲文件是C \ nV \
nEH \ n等。但是,当我尝试将这些文件转换为列表,然后使用count函数时,它会分离出字母,以使诸如’IRQ’之类的字符串为[‘\ n’I’,’R’
,’Q’,’\ n’],这样当我计算它时,我得到每个字母的频率,而不是字符串的频率。

这是我到目前为止编写的代码

def countf():
    fh = open("C:/x.txt","r")
    fh2 = open("C:/y.txt","w")
    s = []
    for line in fh:
        s += line
    for x in s:
        fh2.write("{:<s} - {:<d}".format(x,s.count(x))

我最后想要的是一个看起来像这样的输出文件

C  10
V  32
EH 7
A  1
IRQ  9
H 8

问题答案:

使用Counter(),并使用strip()删除\n

from collections import Counter
with open('x.txt') as f1,open('y.txt','w') as f2:
    c=Counter(x.strip() for x in f1)
    for x in c:
        print x,c[x]   #do f2.write() here if you want to write them to f2

输出:

A 1
C 3
EH 1
IRQ 1
V 2
H 1
IRG 1


 类似资料:
  • 问题内容: 我想计算一个文本文件中所有单词的频率。 如果目标文本文件如下所示,则应返回: 在一些帖子之后,我已经用纯python实现了它。但是,我发现由于巨大的文件大小(> 1GB),纯python方法是不够的。 我认为借用sklearn的能力是一个候选人。 如果让CountVectorizer为每一行计数频率,我想您将通过累加每一列来获得字频率。但是,这听起来有点间接。 用python计算文件中

  • 问题内容: 我有一个包含以下文件的Lucene-Index: 因此,这5个文档使用14个不同的术语: 每学期的频率: 为了易于阅读: 我现在想知道的是,如何获得一组文档的术语频率向量? 例如: 将导致输出: 删除所有零: 注意,结果向量仅包含该文档集的术语频率。不是整个索引的整体频率!在整个索引中,“行星”一词出现了4次,但是文档的原始集只包含2次。 天真的实现方式是仅遍历集合中的所有文档 ,创建

  • 问题内容: 我试图加快我的项目以计算单词频率的速度。我有360多个文本文件,我需要获取单词的总数以及另一个单词列表中每个单词出现的次数。我知道如何使用单个文本文件执行此操作。 要获得“通货膨胀”,“工作”,“产出”个体的频率过于繁琐。我可以将这些单词放入列表中并同时查找列表中所有单词的出现频率吗?基本上,这与Python。 示例:代替此: 我想这样做(我知道这不是真实的代码,这是我在寻求帮助的内容

  • 问题内容: 到目前为止,我的代码是这样的: 我想添加一个代码,该代码可以计算来自模式(此路径中的42个txt文件)中的唯一单词,但我不知道该怎么做。有谁能够帮助我? 问题答案: 在Python中计算对象的最佳方法是使用为此目的而创建的类。它的行为类似于Python字典,但计数时使用起来稍微容易一些。您只需传递对象列表,它就会自动为您计数。 Counter也有一些有用的方法,例如most_commo

  • 我已经成功地在Java中构建了一个非常简单的Spark流应用程序,它基于Scala中的HdfsCount示例。 当我将这个应用程序提交到我的本地Spark时,它会等待一个文件被写入给定的目录,当我创建该文件时,它会成功地打印字数。我通过按Ctrl+C终止应用程序。 现在我尝试为这个功能创建一个非常基本的单元测试,但是在测试中我无法打印相同的信息,即字数。 我还尝试在之后添加,但在这方面没有任何改变

  • 问题内容: 计算单词在文件中出现的次数的简便方法是什么? 问题答案: 这还将在单行中计算单词的多次出现: