2016-12-21 17 views
-1

私はテキストの本文の周波数のプロットを生成するプログラムを作成しています。しかし、私のコードには、それを見つけられないというエラーがあります。何か案は?

def letter_count(word,freqs,pmarks): 
for char in word: 
    freqs[char]+=1 
def letter_freq(fname): 
fhand = open(fname) 
freqs = dict() 
alpha = list(string.uppercase[:26]) 
for let in alpha: freqs[let] = freqs.get(let,0) 
for line in fhand: 
    line = line.rstrip() 
    words = line.split() 
    pmarks = list(string.punctuation) 
    words = [word.upper() for word in words] 
    for word in words: 
     letter_count(word,freqs,pmarks)                     
fhand.close() 

return freqs.values 

+1

ねえAlqosh。インデントがPythonでは重要であることを知っていると思います。コードの正しいインデントを使用して実行するか、それ以上の助けのために理解できるようにしてください:) – choli

+0

インデントは問題ではありません(私の意図は私のpythonで正しい)。私はこのエラーメッセージを受け取る:KeyError: '。 '私は以前にそれを見たことがありません –

+0

正しいインデントを理解することは、同様に手助けしたいと思っている人にとっては役に立ちます。 – choli

答えて

0

あなたは、char =と

freqs[char]+=1 

を呼び出しています ''値を初期化せずにfreqs ['。'] = 0

辞書の既存のキーに対してのみ+ = 1操作を行うことができるので、キーがすでに存在するかどうかを確認する必要があります。

だから、のようなもの:

for char in word: 
    if freqs.has_key(char): 
     freqs[char]+=1 

Python: how can I check if the key of an dictionary exists?

+0

を更新してください。 'char'が句読点であるかどうかを調べる必要があります。 freqs [char]を更新しますか? –

+0

私の答えを更新する – choli

関連する問題