CSV_1.csv具有以下结构:

ABC
DEF
GHI
JKL
MNO
PQR


CSV_2.csv具有以下结构:

XYZ
DEF
ABC


CSV_2.csvCSV_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)


我想到了awkawk的确切代码是什么?

最佳答案

是的,您的方法效率很低。使用集的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/

10-12 05:31