这个问题已经在这里有了答案:

我正在使用以下代码来计算文本文件中单词出现的频率:

#!/usr/bin/python
file=open("out1.txt","r+")
wordcount={}
for word in file.read().split():
    if word not in wordcount:
        wordcount[word] = 1
    else:
        wordcount[word] += 1
for k,v in wordcount.items():
    print k, v

如何按频率编号降序打印输出?

===============>>#1 票数:7

使用Counter.most_common而不指定值来获取单词频率的降序列表。

from collections import Counter

word_count = Counter()

with open("out1.txt","r+") as file:
    word_count.update((word for word in file.read().split()))

for word, count in word_count.most_common():
    print word, count

>>> the 6
Lorem 4
of 4
and 3
Ipsum 3
text 2
type 2

===============>>#2 票数:2

您可以创建一个元组列表并对其进行排序。 这是一个例子。

wordcount = {'cat':1,'dog':2,'kangaroo':20}

ls = [(k,v) for (k,v) in wordcount.items()]

ls.sort(key=lambda x:x[1],reverse=True)

for k,v in ls:
    print k, v

...输出...

kangaroo 20
dog 2
cat 1

===============>>#3 票数:2 已采纳

这是代码:

file=open("out1.txt","r+")
wordcount={}
for word in file.read().split():
    word = word.lower()
    if word.isalpha == True:
        if word not in wordcount:
            wordcount[word] = 1
        else:
            wordcount[word] += 1
copy = []
for k,v in wordcount.items():
    copy.append((v, k))


copy = sorted(copy, reverse=True)

for k in copy:
        print '%s: %d' %(k[1], k[0])

Out1.txt

hello there I am saying hello world because Bob is here and I am saying hello because John is here

运行方式为

hello: 3
saying: 2
is: 2
here: 2
because: 2
am: 2
I: 2
world: 1
there: 1
and: 1
John: 1
Bob: 1

===============>>#4 票数:1

使用Counter模块。

from collections import Counter

s = "This is a sentence this is a this is this"

c = Counter(s.split())
#s.split() is an array of words, it splits it at each space if no parameter is given to split on

print c

>>> Counter({'is': 3, 'this': 3, 'a': 2, 'This': 1, 'sentence': 1})

但是,这对于句点和大写字母无法“正确”运行。 您可以简单地删除单词末尾的句点以正确计数,并使所有内容都小写/大写以使其不区分大小写。

您可以使用以下方法消除这两个问题:

s1 = "This is a sentence. This is a. This is. This."
s2 = ""

for word in s1.split():
    #punctuation checking, you can make this more robust through regex if you want
    if word.endswith('.') or word.endswith('!') or word.endswith('?'):
        s2 += word[:-1] + " "
    else:
        s2 += word + " "

c = Counter(s2.lower().split())

print c

>>> Counter({'this': 4, 'is': 3, 'a': 2, 'sentence': 1})

  ask by jöndi translate from so

未解决问题?本站智能推荐:

1回复

计算Python中2个单词的所有组合的出现频率

这个问题已经在这里有了答案: 在Python 8答案 中将列表成对循环(当前,下一个) 如何计算列表中元素的频率? 29个答案 我有一段文字。 我想计算2个单词的所有可能组合(2个单词必须彼此相邻),例如: 结果应为: 我尝试过Rege
4回复

用python从语料库中提取最频繁的单词

也许这是一个愚蠢的问题,但我有一个问题,用Python从语料库中提取十个最常用的单词。 这是我到目前为止所得到的。 (顺便说一下,我和NLTK一起阅读一个包含两个子类别的语料库,每个子类别包含10个.txt文件) 如果我用我的语料库打印这个函数,它会给我一个列表,其中包含“1”后面的
1回复

根据另一列Python中的值计算一列中字符串出现的nr

预先对真正的基本问题感到抱歉,我知道到处都有关于此问题的帖子,但是在其他网页上的所有帮助下,我似乎也无法解决它。 对于初学者,我是python的初学者,所以对代码模糊感到抱歉。 但是我只想算一算,当第1列中的值保持不变时,某个字符串在第2列中出现的次数。 如果此值更改,则循环应重新开始
4回复

R的tm包用于字数统计

我有一个包含超过5000个文本文件的语料库。 我想在每个文件运行预处理之后获得每个文件的单个字数(转向更低,删除停用词等)。 我对单个文本文件的单词计数没有任何好运。 任何帮助,将不胜感激。
3回复

wordCount频率返回重复在Java中设置

我有一个方法可以将单个单词作为字符串返回。 我需要计算读取文本块的方法返回的所有单词。 问题是我计数正确,但输出错误。 在重复。 不太确定哪里出了问题?
8回复

在python中修复基本字数

因此,我的代码有问题,我的字数始终等于“ 4”,每当我输入不同数量的字时,字数都不正确。 这是我的代码: 样本输出: 我的字符数非常好,这只是我的字数。 我对需要解决的问题感到困惑。 帮助将不胜感激!
4回复

如何获取字符串python的连续字数

我正在尝试制作一个python脚本,它接受一个字符串并给出连续单词的计数。 让我们说: 我正在尝试使用python而不从集合中导入集合,计数器。 我的内容如下。 我正在尝试使用re.findall(#whatpatterndoiuse, string)迭代字符串并进行比较,但我很难
1回复

字数统计Python 3.3程序中的可迭代错误

我正在尝试完成一个简单的单词计数程序,该程序可以跟踪连接文件中的单词,字符和行数。 现在,如果一切顺利,则应该打印文件中的行,字母和单词的总数,但是我得到的只是以下消息: “单词+ = len(words)TypeError:'int'对象不可迭代” 怎么了? 解决了!
5回复

Python:如何使用while循环并输出正确的字数

这是我到目前为止的内容: 问题是我得到这个: 当我输入少于或少于5个单词时,它会保持该单词数不变。
1回复

Python中经典Hadoop字数示例中的数据流

我正在尝试理解Python http://www.michael-noll.com/tutorials/writing-an-hadoop-mapreduce-program-in-python/中的Hadoop字数示例 作者从天真的版本的mapper和reducer开始。 这是减速器(