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

例如:1.txt文档为(全是字符串类型):abcde00dldf4dkfdf00djfj6dkkdf12djkf5dffdh12dkff6dkdfo2.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()
语法没有出错,但是结果不对,还望各位多指点,看是哪里出现问题了,帮我改改,非常感谢!
展开
 我来答
wenwu500
2012-08-14 · TA获得超过213个赞
知道小有建树答主
回答量:181
采纳率:0%
帮助的人:188万
展开全部
# -*- 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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式