0

我有两个文件, file1 包含的内容为

aaa  
bbb  
ccc

文件 2 包含的内容为

ccc 2
ddd 10
eee 11
aaa 12
rrr 3
bbb 20
nnn 46

我想这样做,如果 file2 包含 file1 的行,那么该行将从 file2 中删除。最后,file2 将是

ddd 10
eee 11
rrr 3
nnn 46

此外,我的代码是

f1 = open("test1.txt","r")
f2 = open("test2.txt","r")

fileOne = f1.readlines()
fileTwo = f2.readlines()
f1.close()
f2.close()
outFile = open("test.txt","w")
x = 0
for i in fileOne:
    if i !=  fileTwo[x]:
    outFile.writelines(fileTwo[x])
    x += 1

outFile.close()

谢谢你。

4

2 回答 2

3

Aset在这里最好:

with open(file1) as f1:
    s = set(x.strip() for x in f1)

with open(file2) as f2, open(fileout,'w') as fout:
    for line in f2:
        if line.split(None,1)[0] not in s:
            fout.write(line)
于 2013-06-03T15:48:05.850 回答
0

假设您的代码正在运行,只需替换:

if i !=  fileTwo[x]

经过

if not i in fileTwo[x]

你也可以使用startswith()

于 2013-06-03T15:44:37.943 回答