2016-05-12 3 views
0

最も頻繁に使用される単語の上位N個をテキストファイルに印刷しようとしています。これまでのところ、私はファイルシステムとカウンタを持っていて、すべての作業ができました。ちょっとしたやり方で印刷する方法がわかりません。ここに私のコードです。適切な書式のカウンターアイテムのみを印刷します。

import re 
from collections import Counter 

def wordcount(user): 
""" 
Docstring for word count. 
""" 
file=input("Enter full file name w/ extension: ") 
num=int(input("Enter how many words you want displayed: ")) 

with open(file) as f: 
    text = f.read() 

words = re.findall(r'\w+', text) 

cap_words = [word.upper() for word in words] 

word_counts = Counter(cap_words) 


char, n = word_counts.most_common(num)[0] 
print ("WORD: %s \nOCCURENCE: %d " % (char, n) + '\n') 

は基本的に、私はちょうど、インスタンスnumに

...移動して、次を出力しますいくつかの並べ替えのループを作りたい= 3

だから3をプリントアウトします最も頻繁に使用される単語、およびそれらのカウント。 WORD:何とか発生:3 ワード:blooの発生:2 ワード:blee発生:1

答えて

0

最も一般的な要素を保存し、ループを使用します。
1. format()代わり%のフォーマット文字列に - あなたはこのアドバイスを後で私に感謝します:

most_common = word_counts.most_common(num) # removed the [0] since we're not looking only at the first item!  
for item in most_common: 
     print("WORD: {} OCCURENCE: {}".format(item[0], item[1])) 

二つのコメント:次のように

common = word_counts.most_common(num)[0] 
for i in range(3): 
    print("WORD: %s \nOCCURENCE: %d \n" % (common[i][0], common[i][1])) 
+0

ありがとうございました!何らかの理由で私の頭の中のシステムを理解できませんでした。今は完璧に動作します。 – njg10

+0

誰かがdownvoteを説明することができたら、この回答を改善したいと思います(私はOPの問題をどのように解決したのかは分かりませんが)。 – TigerhawkT3

+0

誰がダウン投票したか分かりませんが、この回答が有効なので、私は投票とバランスを取っています;) – alfasin

2

は、私が「最も一般的な」繰り返すだろう!
2.このようにして、の数字を「トップN」の数だけ繰り返し、コードに「3」をハードコードすることなく処理できます。

関連する問題