2014-02-19 208 views
1

我有一個從文本文件中爲字頻計數的python代碼。該計劃的問題在於,它需要考慮到因此改變計數。爲了計算單詞,我使用了一個排序的單詞列表。我試着用從Python中的列表中刪除fullstop,逗號,引號

words = open(f, 'r').read().lower().split() 
uniqueword = sorted(set(words)) 
uniqueword = uniqueword.replace(".","") 

刪除句號,但我得到的錯誤作爲

AttributeError: 'list' object has no attribute 'replace' 

任何幫助,將不勝感激:)

+0

目前尚不清楚你到底有什麼問題。你是否發現你的文字帶有標點符號?或者你是否發現在「單詞」列表中有標點符號? – alastair

+0

輸出我得到: '字計數 金髮4個 金髮。 2' 都是同一個詞,唯一的區別是一個在句子中間的某處,而另一個在結尾。 –

回答

1

您可以處理你的話讓set之前,使用列表理解:

words = [word.replace(".", "") for word in words] 

你也可以刪除它們後(uniquewords = [word.replace...]),但是您將重新引入重複項。

需要注意的是,如果你想算這些話,一個Counter可能更爲有用:

from collections import Counter 

counts = Counter(words) 
1

你可能會更好用

words = re.findall(r'\w+', open(f, 'r').read().lower()) 

這將抓住所有一個組成的字符串或更多的「單詞字符」,並會忽略標點符號和空格。