我该怎么做,我有一些文件,我已经在其中对信息进行了排序,我想将该文件中的某个索引与另一个文件中的索引进行比较,一个问题是文件非常大,有数百万行.我想逐行比较我拥有的文件,如果它们匹配,我想使用索引方法输入这两个值以及其他值。
=======================
让我澄清一下,我想说 line[x] x 将保持不变,因为它的格式是统一的,我想在另一个文件中针对 line[y] 运行 line[x],我想这样做到整个文件并将每个匹配对输出到另一个文件。在另一个文件中,我还希望能够包含第一个文件中的其他部分,就像添加更多索引一样; line[a]、line[b]、line[c]、line[d],最后是 line[y] 作为该信息的匹配项。
尝试 3:
我有一个包含以下格式信息的文件:
#x是一行
x= data,data,data,data,data,data
有数百万行。
我有另一个文件,同样的格式:
xis a line
x= data,data,data,data
我想使用第一个文件中的 x[#] 和第二个文件中的 x[#],我想看看这两个值是否匹配,如果匹配,我想输出它们以及其他几个 x[#]来自第二个文件的值,它们在同一行。
这对理解有帮助吗? 文件的格式就像我说的那样:(但是有数百万,我想在两个文件中找到对,因为它们都应该匹配)
line 1 data,data,data,data
line 2 data,data,data,data
来自文件 1 的数据:
(N'068D556A1A665123A6DD2073A36C1CAF', N'A76EEAF6D310D4FD2F0BD610FAC02C04DFE6EB67',
N'D7C970DFE09687F1732C568AE1CFF9235B2CBB3673EA98DAA8E4507CC8B9A881');
来自文件 2 的数据:
00000040f2213a27ff74019b8bf3cfd1|index.docbook|Redhat 7.3 (32bit)|Linux
00000040f69413a27ff7401b8bf3cfd1|index.docbook|Redhat 8.0 (32bit)|Linux
00000965b3f00c92a18b2b31e75d702c|Localizable.strings|Mac OS X 10.4|OSX
0000162d57845b6512e87db4473c58ea|SYSTEM|Windows 7 Home Premium (32bit)|Windows
000011b20f3cefd491dbc4eff949cf45|totem.devhelp|Linux Ubuntu Desktop 9.10 (32bit)|Linux
它排序的顺序是字母数字,我想用 slider 的方式。我的意思是,如果 file1[x] 小于 file2[x],则根据一个值是否大于另一个值向下或向上移动 slider ,直到找到匹配项,如果找到匹配项,则将输出与其他值一起打印这将识别该散列。
我想要的结果是:
file1[x] 及其在 file2[x] 上的对应匹配输出到文件,以及其他 file1[x],其中 x 可以是行中的任何索引。
请您参考如下方法:
使用这种方法并逐行比较,您不必将文件存储在内存中,因为文件很大。
with open('file1.txt') as f1, open('file2.txt') as f2, open('file3.txt','w') as f3:
for x, y in zip(f1, f2):
if x == y:
f3.write(x)
