2016-09-23 4 views
1

私は2つのファイルを開きます - 比較のための新しいファイルと、このファイルから削除する必要のあるバズ語を含むファイルを開きます。2つのファイルの行を比較して等しいかどうかを調べる

ファイルが main()で開かれており、これに渡される、と buzzmain()から開かれ、渡されている話題ファイルで新しいファイルである
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 

:私は、これまでの機能としてこれを持っています。

削除セクションが機能していないため、新しいファイルは変更されません。

提案がありますか?

+1

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

は、最後にファイルに新しいデータを書き込みます。 – elethan

+0

両方のファイルは1行に1語ですか? –

答えて

3

まず、各ファイルの内容を読み込み、リストに入れ:

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

次にb_listであるa_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

はい、これは1行に1語を想定しています。 – Degraw

0

ファイルデータを開き、リストにファイルデータを入れます。

その後の言葉をフィルタリング:ファイルオブジェクトは `remove`メソッドを持っていない、一つには

with open(file,"w") as f: 
    for i in new: 
     f.write(i+"\n") 
f.close() 
関連する問題