在 Python 中比较多个文本文件的内容并查找重复项的有效方法是什么



我正在尝试找到一种有效的方法来比较多个文本文件中的内容并找到其中的重复行。

我首先从嵌套循环开始,它起作用了。

def process_files(self,directory):
    files=os.listdir(directory)
    files=[os.path.join(directory, file) for file in files]
    for i in range(len(files)):
        file1=files[i]
        fh1=open(file1, 'r')
        file1_raw = fh1.read()
        if i+1 <len(files):
            for i in range(len(files[1:])):
                file2=files[i+1]
                fh2=open(file2, 'r')
                file2_raw = fh2.read()
                file1_words = file1_raw.split()
                file2_words = file2_raw.split()
                for w in file2_words:
                    if w in file1_words:
                        print (w)

然后,我发现它非常慢,因为文件很大。因此,我尝试使用泳池工作人员并找到解决方法。我试图实现这里提到的想法。但是,我无法让它正常工作。

我有一个要求:我不想将文件与自身进行比较。这应该在zip中考虑。

如果有人能在这件事上给出一些想法,将不胜感激。谢谢。

以下是

一些使用 bash commsortawk 的解决方案,这些解决方案会将file2的唯一值重定向到out

comm <(sort f1) <(sort f2) -13 > out

如果要提高速度,请使用sort --parallel选项。

使用awk

awk 'NR==FNR{lines[$0];next} !($0 in lines)' f1  f2 > out

文件 1 :

I'm unique and I leave if file 1
1
2
3
4
5
I'm unique and I leave if file 1
6
I'm unique and I leave if file 1
7
I'm unique and I leave if file 1

文件 2 :

1
2
I'm unique and I leave if file 2
3
4
5
I'm unique and I leave if file 2
6
7

I'm unique and I leave if file 2
I'm unique and I leave if file 2

通过重复行,如果您的意思是行与行完全匹配,则考虑将整行作为字符串插入的数据库,并检查数据库中是否存在该行。你可以尝试像MongoDB或redis这样的数据库

相关内容

  • 没有找到相关文章

最新更新