Python - 查找文本文件中字符串列表的字符串频率

时间:2015-03-11 23:19:51

标签: python string text frequency

我试图在文本文件中找到所有出现的字符串,其中每个字符串都位于文件的新行中。

例如,示例文件可能如下所示:

jump start
jump go
feet start
jump go

所有琴弦的目标总数为1,除了"跳转"会有2

到目前为止,我已成功使用此代码查找单个字数:

import re
import collections
with open('file.txt') as f:
    text = f.read()
words = re.findall(r'\w+',text)
counts = collections.Counter(words)
print(counts)

但是,这只输出如下:jump = 3,start = 2,go = 2,feet = 1

不确定这是否重要,但文件中的行数约为500万,大约有12,000个独立字符串。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

我让这个工作:

import collections

lines = [line.strip() for line in open('results.txt')]
counts = collections.Counter(lines)
print counts

输出:

['Sam', 'sam', 'johm go', 'johm go', 'johm for']
Counter({'johm go': 2, 'sam': 1, 'Sam': 1, 'johm for': 1})

答案 1 :(得分:0)

不使用正则表达式,而是将文件读为words=f.readlines()。您最终会得到与每行对应的字符串列表。然后,从该列表中构建计数器。