2016-05-25 14 views
0

私のコードでは、3つの異なる名前と番号のリストをインポートしています。最も頻繁に発生する名前を取得したいと思います。今、私はすべての名前のリストとそれらが何回起こるかを知る。しかし、このコードでは、必要のない他のすべての列もカウントされます。インポートされたテキストファイルを1列だけ使用するにはどうすればよいですか?

  1. テキストファイルの1列のデータのみを分析するにはどうすればよいですか?

2.複数回ではなく、1回だけ出現する単語で出てくると答えてください。

import re 

filelist = ['D.txt','A.txt','S.txt'] 
wordbank = {} 
for file in filelist: 
    article_one = re.findall('\w+', open(file,).read().lower()) 

    for word in article_one: 
     word = word.lower().strip(string.punctuation) 
     if word not in wordbank: 
      wordbank[word] = 1 
     else: 
      wordbank[word] += 1 

sortedwords = sorted(wordbank.items(), key=operator.itemgetter(1)) 

for word in sortedwords: 
    print (word[1], word[0]) 

答えて

1

テキストファイルの列はどのように区切られますか?たとえば、タブ区切りの列であるとします。正規表現を使用するのではなく、テキストファイルの各行を読み込み、'\t'で行を分割します。次に、最初の列のみを使用するには、分割線を含むリストのインデックスをゼロにします。

単語バンクを使って何をしているのかは、1回だけ出現する単語を見つけるのに十分です。

filelist = ['D.txt','A.txt','S.txt'] 
wordbank = {} 
for file in filelist: 
    f = open(file, 'r') 
    lines = f.readlines() 
    for l in lines: 
     line = l.split('\t') 
     word = line[0] 

     if word not in wordbank: 
      wordbank[word] = 1 
     else: 
      wordbank[word] += 1 
    f.close() 

# Gather unique words 
unique_words = [] 
for word in wordbank.keys(): 
    if wordbank[word] == 1: 
     unique_words.append(word) 
+0

私は私がすることを示している上記のコードを提供unique_wordsコード – JetCorey

+0

から応答が届かない:あなたがしなければならないのは、それが例えば1を超えていないことを確認するために、各単語の数を確認してくださいとるれますユニークな言葉を集める方法。 forループが完了すると、unique_wordsのみのリストが作成されます。 –

関連する問題