2016-09-23 101 views
1

我打開兩個文件 - 一個包含用於比較的新文件,另一個包含需要從此文件中刪除的時髦詞語。我這是迄今爲止功能:比較兩個文件中的行,如果它們相等,則刪除

def remove(file, buzz): 
    #outer for loop cycles through the buzz file 
    for line in buzz: 
     #inner for loop cycles through the new file 
     for line2 in file: 
      if (line==line2): 
       file.remove(line2) 
      else: 
       continue 

其中file是已在main()被打開,被傳遞到這一點,並buzz是被打開,並從main()傳遞的嗡嗡聲文件中的新文件。

刪除部分不起作用,新文件不變。

有什麼建議嗎?

+1

一方面,文件對象沒有'remove'方法。 – elethan

+0

兩個文件每行一個單詞嗎? –

回答

3

首先讀取每個文件的內容,並把它們在列表:

a_list = open(file_a).read().splitlines() 
b_list = open(file_b).read().splitlines() 

接着刪除的a_list是在b_list的話:

a_list = [word for word in a_list if word not in b_list] 

的a_list現在僅包含單詞不在b_list中

+1

如果每個單詞用換行符分隔,這將起作用,否則'a_list'將包含不在'b_list'中的單詞行。 –

+0

是的,這假設每行一個字。 – Degraw

0

打開並將文件數據放入列表中:

file_data = [line.strip() for line in open(file)] 
buzz_data = [line.strip() for line in open(buzz)] 

然後過濾掉的話:

new = [line for line in file_data if line not in buzz_data] 

新的數據最後寫入文件:

with open(file,"w") as f: 
    for i in new: 
     f.write(i+"\n") 
f.close() 
相關問題