2016-09-25 118 views
1

我已經在Python中運行下面的代碼以從文本文件生成單詞列表和它們的計數。我將如何去濾除我的「frequency_list」變量中只包含1的單詞?在Python中更改字典/鍵

另外,我怎麼會在底部導出打印語句循環到CSV

預先感謝提供任何幫助。

import re 
import string 
frequency = {} 
document_text = open('Words.txt', 'r') 
text_string = document_text.read().lower() 
match_pattern = re.findall(r'\b[a-z]{3,15}\b', text_string) 

for word in match_pattern: 
    count = frequency.get(word,0) 
    frequency[word] = count + 1 

frequency_list = frequency.keys() 



for words in frequency_list: 
    print (words, frequency[words]) 
+0

迭代關鍵值對使用[one這些'''dict'''方法](https://docs.python.org/3/library/stdtypes.html#mapping-types-dict);測試你的狀況的價值;將符合要求的密鑰存儲在容器中(如列表);使用[csv模塊](https://docs.python.org/3/library/csv.html)寫入csv – wwii

回答

1

要過濾掉的話,另一種方法是:

frequency = dict(filter(lambda (k,v): v>1, frequency.items())) 

要導出打印語句在底部循環到CSV,你可以這樣做:

import csv  
frequency_list = ['word1','word2','word3'] # example 

with open('output.csv','w') as csvfile: 
    writer = csv.writer(csvfile, delimiter=",") 
    writer.writerow(frequency_list) 

這將生成一個'output.csv'文件,其中包含頻率列表中的頻率列表

要獲得一排每個字嘗試以下內容:

with open('output.csv','w') as csvfile: 
    writer = csv.writer(csvfile, delimiter=",") 
    writer.writerows([i.strip() for i in l.split(',')] for l in frequency_list) 

更新

要獲得以CSV櫃檯,讓您的初始字典並執行以下操作:

frequency = {"one":1,"two":2,"three":3} #example 
with open('output.csv', 'w') as csvfile: 
    writer = csv.writer(csvfile) 
    for key, value in frequency.items(): 
     writer.writerow([key, value]) 
+0

非常感謝!使用最後一個導出示例,我將如何將上述計數值帶到CSV中?這樣每行(單詞)在其旁邊的一列中也有相應的計數。 – bkubs557

1

對於第一部分 - 你可以使用字典理解:

frequency = {k:v for k,v in frequency.items() if v>1}

+0

認爲你的意思是v> 1,但非常感謝你! – bkubs557