ファイルに出現した単語の数を見つけようとしています。テキストファイルがあります(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})
誰か助けてくれませんか?前もって感謝します 。
Counterのupdate
メソッドを使用します。例:
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})
from collections import Counter;
cnt = Counter ();
for line in open ('TEST.txt', 'r'):
for Word in line.split ():
cnt [Word] += 1
print cnt
すべての行を繰り返し、毎回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)
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
f = open('input.txt', 'r')
data=f.read().lower()
list1=data.split()
d={}
for i in set(list1):
d[i]=0
for i in list1:
for j in d.keys():
if i==j:
d[i]=d[i]+1
print(d)
FILE_NAME = 'file.txt'
wordCounter = {}
with open(FILE_NAME,'r') as fh:
for line in fh:
# Replacing punctuation characters. Making the string to lower.
# The split will spit the line into a list.
Word_list = line.replace(',','').replace('\'','').replace('.','').lower().split()
for Word in Word_list:
# Adding the Word into the wordCounter dictionary.
if Word not in wordCounter:
wordCounter[Word] = 1
else:
# if the Word is already in the dictionary update its count.
wordCounter[Word] = wordCounter[Word] + 1
print('{:15}{:3}'.format('Word','Count'))
print('-' * 18)
# printing the words and its occurrence.
for (Word,occurance) in wordCounter.items():
print('{:15}{:3}'.format(Word,occurance))