【发布时间】:2014-10-08 13:23:47
【问题描述】:
我有两个文本文件,每个文件大约 1GB,每行有 60 列。 每个文件中有 6 列是要比较的键。
例子:
文件 1:
4|null|null|null|null|null|3590740374739|20077|7739662|75414741|文件2:
4|null|11|333|asdsd|null|3590740374739|20077|7739662|75414741|
这里两行是相等的,因为列 7、8、9 和 10 在两个文件(键)中是相同的。 我尝试了一个示例来比较文件而不考虑键,效果很好,但我需要根据键进行比较,而不是每行中的字符。
这是我在不考虑键的情况下进行比较的代码示例。
matched = open('matchedrecords.txt','w')
with open('srcone.txt') as b:
blines = set(b)
with open('srctwo.txt') as a:
alines = set(a)
with open('notInfirstSource.txt', 'w') as result:
for line in alines:
if line not in blines:
result.write(line)
else:
matched.write(line)
with open('notInsecondSource.txt', 'w') as non:
for lin in blines:
if lin not in alines:
non.write(lin)
matched.close()
【问题讨论】:
-
同一个键是否会在一个文件中出现两次(在不同的行上)?如果是这样,在这种情况下会发生什么?
-
这里使用的基本方法是对两个文件进行排序并同时遍历它们。除了繁重的排序操作,这只是一个线性(遍历一次)函数。
-
感谢您的评论:)。两个文件中的键组合是唯一的 @TimPietzcker。因为其中一个键是日期时间戳。
标签: python