2015-11-11 95 views
-1

免責聲明:非常新鮮的蟒蛇。我有一項任務,要求我在刪除標點符號並降低文件中的所有單詞之後計算並打印文件中每個單詞的頻率(以及單詞)。現在我有輸入下列組合從文件處理的每一行:編輯一個字符串,Python

import string 

words = "Dave, Laura, Maddy, Dave, Laura, Maddy, Dave, Laura, Dave" 
translation = str.maketrans("","", string.punctuation) 
new = words.translate(translation) 
lower = new.lower() 

然而,這似乎原油給我,我覺得我可以完成我的任務,用較少的函數調用/更少的代碼。有沒有人對我如何做到這一點有任何建議?

+3

我認爲這個問題會更切合主題的[代碼審查(https://codereview.stackexchange.com /)。 – thirtythreeforty

+0

你是什麼意思「這看起來很粗糙」?此代碼不起作用。 –

+0

@JoeR:他只是刪除了'string.punctuation'所需的'import string';否則它工作正常。 – jermenkoo

回答

1
words = "Dave, Laura, Maddy, Dave, Laura, Maddy, Dave, Laura, Dave" 
words_lower = ' '.join([word.lower() for word in words.split(',')]) 
print (words_lower) 


dave laura maddy dave laura maddy dave laura dave 
+0

OP要計算並打印文件中每個單詞的頻率。 –

+0

是的,但那一部分我還在搞清楚,我不想讓你們爲我完成我的任務。這正是我所期待的。謝謝@galaxyan! –

+1

@DavidTamrazov我準備好了這部分。如果你需要幫助,我可以發佈它 – galaxyan

0

如果要計算每個單詞的頻率,你可以試試這個:第一個答案

>>> from collections import Counter 
>>> words = "Dave, Laura, Maddy, Dave, Laura, Maddy, Dave, Laura, Dave" 
>>> Counter([word.lower() for word in words.split(', ')]) 
Counter({'dave': 4, 'laura': 3, 'maddy': 2}) 

文檔Counter


短替代:

>>> words = "Dave, Laura, Maddy, Dave, Laura, Maddy, Dave, Laura, Dave" 
>>> words.replace(',', ' ').lower() 
'dave laura maddy dave laura maddy dave laura dave' 

,如果你想擺脫標點符號(比「」更多):

>>> import re 
>>> words = "Dave! Laura: Maddy; Dave, Laura? Maddy, Dave, Laura, Dave." 
>>> re.sub(r'[!:;,?.]', '', words).lower() 
'dave laura maddy dave laura maddy dave laura dave' 
相關問題