你並沒有真正定義單詞總數與不同單詞數量之間的差別。然而,這是一個相當簡單的練習,我會推薦使用Python的glob和csv模塊。您可以使用glob模塊獲取要搜索的文件列表,並使用csv模塊創建逗號分隔結果。
我創建了一個超級簡單的示例程序,您可能會發現有用:
import csv
from glob import glob
#----------------------------------------------------------------------
def find_words(myfile, fh):
number_of_words = 0
kw1 = 0
kw2 = 0
kw3 = 0
for line in fh:
words = line.split()
number_of_words += len(words)
for word in words:
w = word.lower()
if "kw1" == w:
kw1 += 1
elif "kw2" == w:
kw2 += 1
elif "kw3" == w:
kw3 += 1
with open("words.csv", "ab") as csv_fh:
writer = csv.writer(csv_fh)
data = [myfile, number_of_words, number_of_words, kw1, kw2, kw3]
writer.writerow(data)
#----------------------------------------------------------------------
def main(path):
myfiles = glob(path + "/myfile*.txt")
for myfile in myfiles:
with open(myfile) as fh:
find_words(myfile, fh)
if __name__ == "__main__":
main(r"c:\myfiles")
這個例子並至少有一個嚴重的限制。例如,如果關鍵字旁邊有標點符號,那麼這些關鍵字的計數器將會不正確,因爲它們將失敗相等性測試。
此代碼也基於csv模塊的Python 2.x版本。您需要在此代碼中更改Python 3兼容的唯一方法是將open("words.csv", "ab")
行更改爲open("words.csv", "a")
,它應該可以正常工作。
我推薦你用Python 3編程.Python 2將退役。學習它(並且解決它的侷限性)使你在未來獲得的價值很小。 – 5gon12eder 2014-09-12 21:18:18
它看起來像,做我的作業,我會支付你25多聲望。 – ppalacios 2014-09-12 22:27:57
這不是一個家庭作業問題。我現在可以看到它可能聽起來像一個。我只是很想知道作家在撰寫/報告時如何反映相同的事件。這源於我對閱讀來自世界各地報紙的濃厚興趣。 – avenue21st 2014-09-13 23:43:25