CSV_1.csv
具有以下结构:
ABC
DEF
GHI
JKL
MNO
PQR
CSV_2.csv
具有以下结构:XYZ
DEF
ABC
CSV_2.csv
比CSV_1.csv
小很多,并且CSV_2.csv
中存在的许多行都出现在CSV_1.csv
中。我想弄清楚CSV_2.csv
中是否存在行,但CSV_1.csv
中不存在。这些文件未排序。
较大的csv具有接近1000万行,较小的表具有约700万行。
我将如何去做呢?我尝试了python,但是从
CSV_2.csv
中获取每一行并与CSV_1.csv
中的一千万行进行比较需要很多时间。这是我在python中尝试的内容:
with open('old.csv', 'r') as t1, open('new.csv', 'r') as t2:
fileone = t1.readlines()
filetwo = t2.readlines()
with open('update.csv', 'a') as outFile:
for line in filetwo:
if line not in fileone:
outFile.write(line)
我想到了
awk
。 awk
的确切代码是什么? 最佳答案
是的,您的方法效率很低。使用集的O(1)
查找时间,并懒惰地遍历t2
中的行,以下操作应该更快得多:
with open('old.csv', 'r') as t1, open('new.csv', 'r') as t2:
fileone = frozenset(t1)
with open('update.csv', 'a') as outFile:
for line in t2:
if line not in fileone:
outFile.write(line)
关于python - 仅找到一个csv中存在的行,而不找到另一个,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43580836/