2017-03-14 2 views
1

pythonで別のファイルを表示する行を使ってファイルが存在する行を削除することに固執しています。私は文字列の一致のための2つのforループを使用していますが、ループの2番目のitrationに重複した行を与えます。それを行う他の方法はありますか?ありがとうpythonを使用して別のファイルに存在する1つのファイルの行を削除する

with open('results.csv','r+') as source: 
    lines = source.readlines() 

f = open('results_comments.csv','r') 
line = f.readlines() 
for l in line: 
    for L in lines: 
     if L!=l: 
      source.write(L) 
f.close() 
+0

あなたの質問が明確になります。 –

+0

ファイル名からは、csvファイルで作業しているようです。私は正しい? – styvane

+0

いいえ、名前を付けるだけです。それは計画テキストです。 – Balaji

答えて

1

あなたが試すことができます:あなたが働い例を含めて、それを編集した場合

with open('results.csv','r') as source: 
    lines_src = source.readlines() 
with open('results_comments.csv','r') as f: 
    lines_f = f.readlines() 
destination = open("destination.csv","w") 
for data in lines_src: 
    if data not in lines_f: 
     destination.write(data) 
destination.close() 
+1

は宝石のように機能します、ありがとう – Balaji

0

あなたの変数名は混乱しているので、私はカップルに名前を変更しました。私はあなたが結果を書くために新しいファイルを開く必要があると思う(少なくともそれはあなたがやろうとしていることを明確にする)。後で同じ名前が必要な場合は、ファイルの名前を変更することができます。

with open('results.csv','r+') as source: 
    filter_lines = source.readlines() 

with open('results_comments.csv','r') as f: 
    lines = f.readlines() 

with open('target.csv', 'w') as target: 
    for line in lines: 
     if line not in filter_lines: 
      target.write(line) 
0
with open('results.csv','r+') as source: 
    lines = source.readlines() 

f = open('results_comments.csv','r') 
line = f.readlines() 
line = filter(lambda x : x not in lines, line) 
f.write('\n'.join(line)) 
f.close() 
関連する問題