python - 在文件中查找单词的出现位置

Ash*_*win 10 python file count cpu-word

我试图找到文件中出现的单词数.我有一个文本文件(TEST.txt)文件的内容如下:

ashwin programmer india
amith programmer india
Run Code Online (Sandbox Code Playgroud)

我期望的结果是:

{ 'ashwin':1, 'programmer ':2,'india':2, 'amith ':1}
Run Code Online (Sandbox Code Playgroud)

我使用的代码是:

for line in open(TEST.txt,'r'):
    word = Counter(line.split())
    print word
Run Code Online (Sandbox Code Playgroud)

我得到的结果是:

Counter({'ashwin': 1, 'programmer': 1,'india':1})
Counter({'amith': 1, 'programmer': 1,'india':1})
Run Code Online (Sandbox Code Playgroud)

谁能帮帮我吗?提前致谢 .

Mar*_*nen 17

使用updateCounter 的方法.例:

from collections import Counter

data = '''\
ashwin programmer india
amith programmer india'''

c = Counter()
for line in data.splitlines():
    c.update(line.split())
print(c)
Run Code Online (Sandbox Code Playgroud)

输出:

Counter({'india': 2, 'programmer': 2, 'amith': 1, 'ashwin': 1})
Run Code Online (Sandbox Code Playgroud)

  • +1正是我要发布的内容 - 这很好地利用了专门的`Counter.update`方法,并且不需要将整个文件读取到内存中...... (3认同)

Mik*_*rov 8

from collections import Counter;
cnt = Counter ();

for line in open ('TEST.txt', 'r'):
  for word in line.split ():
    cnt [word] += 1

print cnt
Run Code Online (Sandbox Code Playgroud)


Ano*_*rov 5

您正在迭代每一行并每次都调用 Counter 。您希望 Counter 运行整个文件。尝试:

from collections import Counter

with open("TEST.txt", "r") as f:
    # Used file context read and save into contents
    contents = f.read().split()
print Counter(contents)
Run Code Online (Sandbox Code Playgroud)

  • @Anorov 如果您有一个要计算的 50GB 文件会发生什么?(这恰好只有 3 个独特的词)。... (2认同)