txt文件中的Python计数器

txt文件中的Python计数器,python,text-files,counter,Python,Text Files,Counter,我想初始化一个collections.Counter对象,该对象来自词频计数的文本文件。也就是说,我有一个文件“counts.txt”: 我想要一个计数器对象wordCounts,这样我就可以调用 >>> print wordCounts.most_common(3) [('the', 225300), ('of', 157486), ('and', 134478)] 什么是最有效的python方法这里有两个版本。第一个将counts.txt作为常规文本文件。第二种方法将其视

我想初始化一个collections.Counter对象,该对象来自词频计数的文本文件。也就是说,我有一个文件“counts.txt”:

我想要一个计数器对象
wordCounts
,这样我就可以调用

>>> print wordCounts.most_common(3)
[('the', 225300), ('of', 157486), ('and', 134478)]

什么是最有效的python方法这里有两个版本。第一个将
counts.txt
作为常规文本文件。第二种方法将其视为csv文件(这就是它的外观)

import collections.Counter

words = dict()
fp = open('counts.txt')

for line in fp:
   items = line.split()
   words[items[1].strip()] = int(items[2].strip())

wordCounts = collections.Counter(words)
如果您的数据文件被一些一致的字符或字符串分隔,您可以使用
csv.DictReader
对象来解析该文件

下面显示的是,如果您的文件是
选项卡
分隔的,如何执行

数据文件(由我编辑,以制表符分隔)

代码

from csv import DictReader
from collections import Counter

with open('counts.txt') as f:
    reader = DictReader(f, delimiter='\t')
    wordCounts = Counter({row['wordform']: int(row['abs']) for row in reader})
    print wordCounts.most_common(3)

这里有两个版本。第一个将
counts.txt
作为常规文本文件。第二种方法将其视为csv文件(这就是它的外观)

如果您的数据文件被一些一致的字符或字符串分隔,您可以使用
csv.DictReader
对象来解析该文件

下面显示的是,如果您的文件是
选项卡
分隔的,如何执行

数据文件(由我编辑,以制表符分隔)

代码

from csv import DictReader
from collections import Counter

with open('counts.txt') as f:
    reader = DictReader(f, delimiter='\t')
    wordCounts = Counter({row['wordform']: int(row['abs']) for row in reader})
    print wordCounts.most_common(3)

文件中的字段是用制表符、逗号或其他东西分隔的吗?文件中的字段是用制表符、逗号或其他东西分隔的吗?好的解决方案,但我会调用
打印字数。最常见的(3)
关闭文件后:)在这种情况下,您只需取消最后一行的缩进。好的解决方案,但是我会调用
print wordCounts。最常见的(3)
在关闭文件后:)在这种情况下,您需要做的就是取消最后一行的缩进;干净简单。但是我接受了@PaulRooney的答案,因为他使用
with open()
@alavin89更好地处理文件-是的,他的答案更像是PythonicI的答案;干净简单。但是我接受了@PaulRooney的答案,因为他使用
with open()
@alavin89更好地处理文件-是的,他的答案更像python
rank    wordform    abs r   mod
1   the 225300  29  223066.9
2   and 157486  29  156214.4
3   to  134478  29  134044.8
999 fallen  345 29  326.6
1000    supper  368 27  325.8
from csv import DictReader
from collections import Counter

with open('counts.txt') as f:
    reader = DictReader(f, delimiter='\t')
    wordCounts = Counter({row['wordform']: int(row['abs']) for row in reader})
    print wordCounts.most_common(3)