12

ファイルに出現した単語の数を見つけようとしています。私はテキストファイルを持っています(TEST.txt)ファイルの内容は次のとおりです:

ashwin programmer india
amith programmer india

私が期待する結果は次のとおりです。

{ 'ashwin':1, 'programmer ':2,'india':2, 'amith ':1}

私が使用しているコードは次のとおりです。

for line in open(TEST.txt,'r'):
    word = Counter(line.split())
    print word

私が得る結果は次のとおりです。

Counter({'ashwin': 1, 'programmer': 1,'india':1})
Counter({'amith': 1, 'programmer': 1,'india':1})

誰か助けてくれませんか?前もって感謝します 。

4

6 に答える 6

18

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)

出力:

Counter({'india': 2, 'programmer': 2, 'amith': 1, 'ashwin': 1})
于 2013-02-26T06:59:37.173 に答える
8
from collections import Counter;
cnt = Counter ();

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

print cnt
于 2013-02-26T06:57:13.693 に答える
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)
于 2013-02-26T06:55:45.200 に答える
1

Defaultdict を使用する:

from collections import defaultdict 

def read_file(fname):

    words_dict = defaultdict(int)
    fp = open(fname, 'r')
    lines = fp.readlines()
    words = []

    for line in lines:
        words += line.split(' ')

    for word in words:
        words_dict[word] += 1

    return words_dict
于 2014-01-19T02:02:08.713 に答える