3

私は2つの非常に大きなリストを持っています。どちらも元々は優れていましたが、大きい方は名前や住所などの他の情報が記載されたメール(約160,000)のリストです。小さい方はわずか18,000通のメールのリストです。

私の質問は、2番目の電子メールアドレスを含む最初の文書から18,000行すべてを取り除く最も簡単な方法は何でしょうか?

私は正規表現を考えていましたか、それとも私が使用できる別のアプリケーションがありますか?オンラインで検索してみましたが、あまり具体的ではないようです。notepad ++も試しましたが、これらの大きなファイルを比較しようとするとフリーズします。

-前もって感謝します!!

4

2 に答える 2

0

良い質問。私がこれに取り組む1つの方法は、C++プログラムを作成することです[選択した言語にアイデアを外挿することができます。小さいファイルの各項目を文字列のベクトルに読み込む、どの言語に堪能であるかについては言及していません。まず、もちろん、Excelを使用してファイルをXLSやXLSXではなくCSVとして保存します。これにより、値がカンマ区切りされるため、作業が簡単になります。大きなリストの場合は、メールアドレスだけのコピーを「名前を付けて保存」し、他の行を今のところ削除します。

次に、より大きなリストを開き、ネストされたループを使用して、出力ファイルに出力する必要があるかどうかを確認できます。何かのようなもの:

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;
}

それは部分的に擬似コードかもしれませんが、あなたはその考えを理解していますか?

于 2012-09-05T21:06:50.937 に答える
0

だから私はフォーラムの投稿を読んだ:ここ

= MATCH(B1、$ A $ 1:$ A $ 3,0)> 0

列Bは160,000の入力を含む大きなリストであり、列Aは18,000の削除する必要があるもののリストでした。

私はこれをすべてに一致させるために使用し、別の列にこの数式を貼り付けました。エラーまたはTRUEのいずれかを出力します。データが両方の列にある場合、それはtrueを出力しました。

次に、Excelで吸うので、このテキストをNotepad ++にスローし、TRUEを含むすべての行を検索しました(私の場合、一部のデータに大文字なしでtrueという単語が含まれていたため、大文字と小文字を区別します)。検索、ブックマーク、ブックマークのあるすべての行を削除しました。それをExcelと出来上がりに貼り付けました。

私を助けて正しい方向に向けてくれた皆さんに感謝します:)

于 2012-09-06T14:49:49.490 に答える