2016-05-13 11 views
0

私はPythonスクリプトをスタックして、.txtファイルを開き、そのファイルから単語のリストを作成し、単語が何回出現(カウンタ) .csvファイル内。私のファイルの名前は1870.txt - 1892(1871,1872,1873.1.82.txt)です。そこからすべてが機能しますが、各ファイルを次の列に入れたいと思います。Pythonは新しい列を作成し、.CSVファイルにデータを格納します

def putInExcel(outputt): 
    i = 1790 
    while i < 1892: 
     inputt = str(i) + '.txt' #Making text file name 

     writefile = open(outputt) 
     writer = csv.writer(writefile) 

     with open(inputt) as file:  #Separating each word and storing in list 
      text = file.read().lower() 
      text = re.sub('[^a-z\ \']+', " ", text) 
      words = list(text.split()) 

      for word in words: 
       cnt[word] += 1 
      for key, count in cnt.iteritems(): #De-dent this block 
       writer.writerow([key,count]) #Output both the key and the count 

     writefile.close() 
     i = i+1 

このスクリプトは動作していますが、すべてが1列に格納されています。 誰かに何か考えがありますか?ありがとうございました!

答えて

0

私が正しく理解している場合、年/ファイル名ごとの列を含む単一の表が必要です。各列で、数値の頻度カウントが必要です。

____  | 1790 | 1791 | 1792 | ... 
Aachen  1  1  2 
aardvark  1  0  0 
aardwolf  0  1  0 
abacus  1  2  2 
acrimony  2  2  2 
    : 

あなたは、異なるデータセット間の相互作用を心配する必要はありませんので、今かなり単純なスクリプトを持っている:一番左の列には、言葉そのものだろう。複数の入力リストを処理しようとすると、何らかの形でそれらを統一する必要があります。そのため、この例では0のエントリを表示しています。

私の提案は、すべての単語のうちsetまたはdictionaryを維持することです。これが完了すると、一番左の列になります。

年/入力ファイルごとに、別々のカウントを保持できます。あなたは二つの平行なリストとして整理することができます:/ファイル名年、およびカウントの辞書:

All_words = set() 
Headers = []  # 1791, 1792, ... 
Word_counts = [] # {'a':1, 'baa':2}, {'a':1, 'abacus': 1}, ... 

今、あなたのファイルをループは、ヘッダ/カウントリストにファイル名と空の辞書を追加します。

for ... 1791 ... 
    Headers.append(year) 
    cnt = dict() 
    Word_counts.append(cnt) 

今すぐあなたの言葉をカウントしてください。しかし、あなたは単語を数えるとき、また、すべての単語のセットに追加:作業が完了したときに

 cnt[word] += 1 
     All_words.add(word) 

は最後に、あなたが同じ順序で単語を処理する必要があります。したがって、All_wordsの内容を並べ替えて使用してください:

row = ['Word\Year'] 
row.extend(Headers) 
csvfile.writerow(...) 

for word in sorted(All_words): 
    row = [word] # Left column is word 
    row.extend([yr.get(word, 0) for yr in Word_counts]) 
    csvfile.writerow(...)    
+0

これは私が探しているものです!しかし、私は理解し、コードを私のものと接続しようとしています – Ukii

+0

私は1751年のために何が意味するのか分かりません...。申し訳ありませんが、あるコードから別のコードに移動することは難しいです。 – Ukii

+0

「ここに配置する必要があるものは何でも」を意味します。私はそれが何であったかを明確にしようとしていました。 –

関連する問題