我有两个非常大的列表。它们最初都在 excel 中,但较大的一个是电子邮件列表(大约 160,000 封)以及其他信息,例如他们的姓名和地址等。较小的一个是只有 18,000 封电子邮件的列表。
我的问题是从第一个文档中删除包含第二个电子邮件地址的所有 18,000 行的最简单方法是什么?
我在想正则表达式,或者我可以使用另一个应用程序?我曾尝试在网上搜索,但似乎没有太多具体的内容。我也尝试过notepad++,但是当我尝试比较这些大文件时它会冻结。
-先感谢您!!
好问题。我解决这个问题的一种方法是制作一个 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;
}
这可能是部分伪代码,但你明白吗?
所以我读了一个论坛帖子:这里
=匹配(B1,$A$1:$A$3,0)>0
B 列将是一个大列表,有 160,000 个输入,A 列是我需要删除的 18,000 个内容的列表。
我用它来匹配所有内容,并在单独的列中粘贴了这个公式。它会打印出错误或 TRUE。如果数据在两列中,则打印为 true。
然后因为我不喜欢 excel,我把这个文本扔到 Notepad++ 中并搜索所有包含 TRUE 的行(匹配大小写,因为在我的例子中,一些数据的单词是 true 而没有大写。)我标记了这些行,然后在搜索,书签,我删除了所有带有书签的行。将其粘贴回excel中,瞧。
我要感谢你们帮助并指出我正确的方向:)