2016-12-06 164 views
1

我有一些文本文件(這裏只使用兩個),並且我想將它們讀入Python並操作它們。我試圖存儲字符串列表(每個單詞一個字符串,每個文件一個列表)。不知道爲什麼我的Python循環不工作

我的代碼目前看起來是這樣的: (文件被命名爲m1.txt和m2.txt)

dict={'m1':[],'m2':[]} 

for k in files:   
with open(k,'r') as f: 
     for line in f: 
      for word in line.split(): 
       for i in range (1,3): 
        dict['m'+str(i)].append(word) 

該代碼最終在這兩個文本相結合的話文件,而不是給我的每一個字單獨存檔。最終我想閱讀大量的文件,所以任何關於如何將它們分開的幫助將非常感謝!

+1

你是什麼意思結合做?你只是宣佈了一本詞典,所以當然他們都會進入那本詞典。你是否試圖創建多個字典,每個文件一個? – user3030010

+1

同樣你'從理論上將m1.txt中的單詞添加到'dict ['m2']' – depperm

+4

也是不好的練習,使用內置的單詞'dict'作爲變量 – MooingRawr

回答

1

您正在重複打開每個列表,同時通過最終for循環中的替代i值處理每個單獨的文件。

嘗試這樣:

dict={'m1':[],'m2':[]} 

for i, k in enumerate(files):   
    with open(k,'r') as f: 
     for line in f: 
      for word in line.split(): 
       dict['m'+str(i+1)].append(word) 

我已經離開你的代碼「按原樣」,但上述關於不使用語言關鍵字的評論是非常重要的。

+0

感謝您的幫助 - 我會改變我的字典的名字也是如此。 – Dan

1

此示例動態獲取的文件名(不包括擴展名),並用它來表示在字典,我們正在努力:

files = ['m1.txt', 'm2.txt']; 
file_store = {'m1':[],'m2':[]} 

for file in files: 
    prefix = (file.split(r'.'))[0] 
    with open(file, 'r') as f: 
     for line in f: 
      for word in line.split(): 
       file_store[prefix].append(word) 
相關問題