比较两个文件

时间:2012-09-05 20:54:09

标签: regex excel list csv

我有两个非常大的名单。他们最初都是excel,但较大的一个是电子邮件列表(大约160,000),其中包含其他信息,如姓名和地址等。较小的一个是18,000封电子邮件列表。

我的问题是,从包含第二个电子邮件地址的第一个文档中删除所有18,000行的最简单方法是什么?

我在想正则表达式,或者我可以使用另一个应用程序?我尝试过在线搜索,但似乎没有太多具体的内容。我也尝试过notepad ++但是当我尝试比较这些大文件时它会冻结。

- 提前谢谢你!!

2 个答案:

答案 0 :(得分:0)

好问题。解决这个问题的一种方法是制作一个C ++程序[你可以将这个想法推断为你选择的语言;你从来没有提到你精通哪种语言]将较小文件的每个项目都读成一个字符串向量。首先,当然,使用Excel将文件保存为CSV而不是XLS或XLSX,它们将使用逗号分隔值,以便您可以更轻松地使用它们。对于较大的列表,“另存为”仅包含电子邮件地址的副本,暂时删除其他行。

然后,您可以打开较大的列表并使用嵌套循环来检查是否应该输出到输出文件。类似的东西:

bool foundMatch=false;
for(int y=0;y<LargeListVector.size();y++) {
    for(int x=0;x<SmallListVector.size();x++) {
        if(SmallListVector[x]==LargeListVector[y]) foundMatch=true;
    }
    if(!foundMatch) OutputVector.append(LargeListVector[y]);
    foundMatch=false;
}

这可能是部分伪代码,但你明白了吗?

答案 1 :(得分:0)

所以我在以下网址阅读了论坛帖子:Here

= MATCH(B1,$ A $ 1:$ A $ 3,0)大于0

B列是大型列表,160,000个输入,A列是我需要删除的18,000个列表。

我用它来匹配所有内容,并在单独的列中粘贴此公式。它会打印出错误或TRUE。如果数据在两列中,则打印出true。

然后因为我吮吸excel,我把这个文本放到Notepad ++中并搜索包含TRUE的所有行(匹配大小写,因为在我的情况下,有些数据的单词是true而没有大写。)我标记了这些行,然后在搜索,书签下,我删除了带书签的所有行。把它粘贴到excel和瞧。

我想感谢你们帮助并指出我正确的方向:)