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

Python-查找文本文件中字符串列表的字符串频率,python,string,text,frequency,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) c

我正在尝试查找文本文件中出现的所有字符串,其中每个字符串位于文件中的新行上

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

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)
然而,这只会给出如下输出:跳跃=3,开始=2,前进=2,脚=1

不确定这是否重要,但文件中的行数将约为500万行,包含12000个独立字符串


谢谢你的帮助

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

我让它起作用了:

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})

将文件读入一个列表,其中每一行都是列表中的单个元素。然后使用counteruse
f.readlines()
而不是
f.read()
没问题。很高兴我帮了你。Fran Borcic,你会怎么做同样的事情,但是现在每个字符串都用括号“xxxxx”绑定,而不是在一个新行上?明白了:words=re.findall(r'\'(.*?\”,text)不需要反斜杠。另外,要小心,因为如果字符串包含换行符,这将与字符串不匹配。如果不保留对文件对象的引用以在以后关闭它,可能会导致一些问题。