2017-02-17 60 views
1

蟒蛇很新。我的問題是,我有一個txt文件('A.txt'),其中有一堆列和第二個txt文件('B.txt)具有不同的數據。然而,一些在B中的數據也顯示在A.例:行出現在兩個單獨的txt文件,從一個txt文件中刪除

A.txt: 

name1 x1 y1 
name2 x2 y2 
name3 x3 y3 
name4 x4 y4 
name5 x5 y5 
name6 x6 y6 
... 

B.txt 
namea xa ya 
name2 x2 y2 
name3 x3 y3 
nameb xb yb 
namec xc yc 
... 

我想在B.txt一切,顯示了在A.TXT從A.TXT 刪除我意識到這有之前曾被問過,但我已經嘗試過給人們提出類似問題的建議,但這對我不起作用。

到目前爲止,我有:

tot = 0 
with open('B.txt', 'r') as f1: 
    for a in f1: 
     WR = a.strip().split() 

     with open('A.txt', 'r+') as f2: 
      for b in f2: 
       l = b.strip().split() 

       if WR not in l: 
        print l 
        tot += 1 

       #I've done it the following way and also doesn't give the  
       #output I need 
       #if WR == l: #find duplicates 
       # continue 
       #else: 
       # print l 
print tot 

當我運行此我的東西拿回來,我認爲答案是(文件A有2060文件B具有154),但重複154次。 所以,例如我的意思是:

A.txt: 
name1 x1 y1 
name4 x4 y4 
name5 x5 y5 
name6 x6 y6 
... 
name1 x1 y1 
name4 x4 y4 
name5 x5 y5 
name6 x6 y6 
...  
name1 x1 y1 
name4 x4 y4 
name5 x5 y5 
name6 x6 y6 
... 
name1 x1 y1 
name4 x4 y4 
name5 x5 y5 
name6 x6 y6 
... 

我只希望它看起來像:

A.txt: 
name1 x1 y1 
name4 x4 y4 
name5 x5 y5 
name6 x6 y6 
... 

就像我說的,我已經看過其他類似的問題,並試圖什麼他們做了,並且給了我這個重複的答案。任何建議將不勝感激!

回答

0

我只是複製你的A和B文件所以只是檢查,讓我知道,如果它的正確

tot = 0 
f1 = open('B.txt', 'r') 
f2 = open('A.txt', 'r') 

lista = [] 
for line in f1: 
    line.strip() 
    lista.append(line) 

listb = [] 
for line in f2: 
    line.strip() 
    listb.append(line) 

for b in listb: 
    if b in lista: 
     continue 
    else: 
     print(b) 
     tot+=1 

此代碼打印行,但如果你願意,你可以寫一個文件也

+0

所以它只給了我154行代碼,而且我應該得到2044代碼。(我能夠創建一個代碼,告訴我有多少副本,看起來幾乎和我提供的代碼差不多)。我認爲你的解決方案非常接近! – aaa343

+0

檢查修改後的代碼,這是你需要的嗎? –