2017-07-29 8 views
0

プログラミングクラスに作成する必要があるプログラムに問題が発生しました。クラスはPython 3を利用し、割り当てはファイルを読み込んでそのファイルの一致を表示するプログラムを作成することです。私が遭遇している問題は、プログラムを通してファイルを実行すると、単語の代わりにプログラム内の各文字の数が数えられることです。ここに私のプログラムは次のとおりです。すべての一致プログラムで問題が発生する

print ("enter file name") 
f = input() 
file = open(f) 
z = file.read() 
numdict = {} 
my_num = 0 
with open(f) as file: 
    [word for line in z for word in line.split()] 
for word in z: 
    if not word in numdict: 
     numdict[word] = [] 

    numdict[word].append(my_num) 

print("word" , "frequency") 
for key in sorted(numdict): 
    print(key, len(numdict[key])) 

答えて

0

まず、私はあなたが

with open(f) as file: 
    [word for line in z for word in line.split()] 

で達成しようとしているものを完全にはわからない。しかし、それは保存していないので、その行は何もしていませんあなたがどこにいてもそれを削除できるリストを作っています。

for word in z:に問題があります。 z = file.read()以降、zにはファイル全体のテキストを含む文字列が格納されます。つまり、繰り返し処理するとき(for word in z:)、zの各文字にwordを設定します。

zにあなたのすべての単語を与えるz.split()の結果を反復処理されるあなたが代わりにやってみたい、すなわちあなた自身を少し混乱しているように思えfor word in z.split()

0

。ここでは、素朴ではあるが指導的なアプローチです。 (エッジの場合や句読点を扱わないため、ナイーブです)。

wordDict = {} 

with open('file.txt') as file: 
    for line in file: 
     #line is one line in the file 
     words = line.strip().split() 
     #words is an array or words that were in line 
     for word in words: 
      #word is one word from the words array 
      if word in wordDict: 
       wordDict[word] += 1 
      else: 
       wordDict[word] = 1 

file.txtは次のようになります場合:

こんにちはこんにちはこんにちはこんにちはこんにちはこんにちは

あなたの上に起こって起こっている
コメントは、何が起こっているか理解するのに役立つはずですwordDictは次のようになります。

{'Hello': 6, 'What': 1, 'is': 1, 'going': 2, 'on': 3} 
関連する問題