python中实现两个txt文档的去重功能(即去掉第一个文档中和第二文档相同的行)

例如:
1.txt文档为(全是字符串类型):
a b c d e
00 dldf 4 dkf df
00 djfj 6 dkk df
12 djkf 5 dff dh
12 dkff 6 dkd fo
2.txt文档为(全是字符串类型):
a b c d e
00 dldf 4 dkf df
12 dkff 6 dkd fo
现在要实现从1.txt中去除与2.txt文档相同的行(标题行不变),得到另一3.txt文档为:
a b c d e
00 djfj 6 dkk df
12 djkf 5 dff dh
(其实是大型数据,这里只是举例)我现在用的代码是:
import sys
import os
import string
fgene1= open('1.txt','r')
fgene2= open('2.txt','r')
fgene3= open('3.txt','a+')
#读取文件首行,无需处理
str1 = fgene1.readline()
fgene3.write(str1)
for oneLine in fgene1:
str1= oneLine.split()
t=1
for PLine in fgene2:
str2= PLine.split()
if (str1==str2) :
t=0
break
if (t==1):
fgene3.write(' '.join(str1)+'\n')
fgene1.close()
fgene2.close()
fgene3.close()
语法没有出错,但是结果不对,还望各位多指点,看是哪里出现问题了,帮我改改,非常感谢!

# -*- coding: utf-8 -*-
#
# python 2.7

fp1 = file('', 'r')
fp2 = file('', 'r')
fp3 = file('', 'w')

d1 = {}
d2 = {}

isFirst = True

for line in fp1:
if not isFirst:
d1[hash(line)] = line
else:
isFirst = False

fp1.close()

isFirst = True
for line in fp2:
if not isFirst:
d2[hash(line)] = line
else:
isFirst = False

fp2.close()

diff = set(d1.keys()) - set(d2.keys())
for key in diff:
fp3.write(d1[key])
fp3.close()追问

能否再请教一下?例如:
1.txt文档为:
a b c d e
00 dldf 4 dkf df
00 djfj 6 dkk df
12 djkf 5 dff dh
12 dkff 6 dkd fo
2.txt文档为:
a b c d e
00 dldf 4 sms df
12 dkff 6 fgh fo
判断条件为1.txt中的字符串str1与2.txt中的字符串str2,如果有str1[0]==str2[0] and str1[2]==str2[2],也就去掉1.txt中的该行,如上面示例,输出结果依然为:
a b c d e
00 djfj 6 dkk df
12 djkf 5 dff dh

温馨提示:答案为网友推荐,仅供参考
相似回答