使用python调试列表

问题描述:

我有一个py脚本(致谢alexander from Comparing large files with grep or python)调试两个字符串列表。使用python调试列表

现在我想修改调试名单,并删除重复的字符串:

filename_1 = 'A.txt' 
filename_2 = 'B.txt' 
filename_3 = 'C.txt' 
with open(filename_1, 'r') as f1, open(filename_2, 'r') as f2, open(filename_3, 'w') as fout: 
    s = set(val.strip() for val in f1.readlines()) 
    for row in f2: 
     row = row.strip() 
     if row not in s: 
      fout.write(row + '\n') 

列表的内容:

A.txt 
string1 
string2 

B.txt 
string1 
string3 

预期的结果:

C.txt 
string1 
string2 
string3 

感谢

PD:我是新人,我很抱歉。我真正需要的是从列表A中删除B的内容。无论如何,谢谢。

这就是答案,已经研究(3例):

取下A.TXT列表并退出B.txt内容C.txt

a=set(line.strip().lower() for line in open('A.txt').readlines()) 
b=set(line.strip().lower() for line in open('B.txt').readlines()) 
open("C.txt", "w").write("\n".join(a.difference(b))) 

比较A.TXT和B.txt并显示新线B.txt在C.txt

a=set(line.strip().lower() for line in open('A.txt').readlines()) 
b=set(line.strip().lower() for line in open('B.txt').readlines()) 
open("C.txt", "w").write("\n".join(b.difference(a))) 

合并A.TXT和B.txt的内容复制到C.txt

a=set(line.strip().lower() for line in open('A.txt').readlines()) 
b=set(line.strip().lower() for line in open('B.txt').readlines()) 
open("C.txt", "w").write("\n".join(b | a)) 
+2

等等等等你试过了什么,你遇到了什么问题? –

+0

删除重复的字符串 – acaler

+0

从listA和listB中删除重复的字符串,然后将结果保存到列表C?如果是这样,为什么listC在listA和listB中重复时包含'string2'? –

该文件的第一部分包含f2中的那些不在f1中的项目,因此只需将所有f1的内容添加到结果中即可。

with open(filename_1, 'r') as f1, open(filename_2, 'r') as f2, open(filename_3, 'w') as fout: 
    s = set(val.strip() for val in f1.readlines()) 
    for row in f2: 
     row = row.strip() 
     if row not in s: 
      fout.write(row + '\n') 
    for row in s: 
     fout.write(row + '\n')