web-dev-qa-db-ja.com

python-ファイル内の単語の出現を検索します

ファイルに出現した単語の数を見つけようとしています。テキストファイルがあります(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})

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

11
Ashwin

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})
18
Mark Tolonen
from collections import Counter;
cnt = Counter ();

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

print cnt
8

すべての行を繰り返し、毎回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)
4
Anorov

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
1
GrilledTuna
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)
0
Karthic Kannan
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))
0
Fuji Komalan