为了账号安全,请及时绑定邮箱和手机立即绑定

2个未知大小的文本文件之间的区别

2个未知大小的文本文件之间的区别

Qyouu 2021-03-18 14:09:06
为了找到解决方案,我损失了几天,但没有成功!我有两个行很多的文本文件。一个文件可以包含成千上万的数字行,例如:79357795 79357796 68525650。第二个文件也包含数字,但不是太多,可能是一百行(每行还是一个数字)。我尝试了一些“算法”,但没有成功。现在,我的问题是:我可以检查第一个文件的第一行和第二个文件的所有行,之后再检查第一文件的第二行和第二个文件的所有行,依此类推直到文件末尾吗?因此,我想将这两个文件之间的差异保存在第三个文件中。谢谢大家的答复,对于我最糟糕的英语,我们深表歉意。:)PS:哦,是的,我需要在Python中执行此操作。更多详细信息:first_file.txt包含:79790104798730706927465669180377604922097817785279023241697362566869962079577311    78509545696560076818887160643247788988177992410579684143    7903602269445507606055447934818169748018694863236910280268651099second_file.txt包含:78509545    69656007    68188871    6064324778898817    79924105    79684143    79036022    6944550760605544    79348181    69748018    69486323    6910280268651099793577947895395869350610783831116862932178886856third_file.txt需要包含在first_file.txt中不存在但在第二个文件中存在的数字,在这种情况下:793577947895395869350610783831116862932178886856
查看完整描述

3 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

就像是:


from itertools import ifilterfalse


with open('first') as fst, open('second') as snd, open('not_second', 'w') as fout:

    snd_nums = set(int(line) for line in snd)

    fst_not_in_snd = ifilterfalse(snd_nums.__contains__, (int(line) for line in fst))

    fout.writelines(num + '\n' for num in fst_not_in_snd)


查看完整回答
反对 回复 2021-03-29
  • 3 回答
  • 0 关注
  • 134 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信