0

2組のリストから重複リストを見つけようとしました。最初に最初のリストを生成します

while True:
    line=f.readline()
    if not line:
        break
    list_1.append(line)

このリストを使用して、2 番目のファイルをスキャンします。

while True:
    line1=f1.readline()
    if not line1:
        break
    for i in list_1:
        if i==line1[:17]:
            list_2.append(line1)
4

3 に答える 3

4

ThiefMasters の回答は、一般的な行を任意の順序で出力します。いずれかのファイルに表示されるのと同じ順序でアイテムを出力する場合は、最初にもう一方のファイルをセットに読み込みます。

with open("file1.txt") as f:
    file1_set = set(f)

次に、順序を制御するファイルを検索します。

with open("file2.txt") as f:
    list2 = [line for line in f if line in file1_set]

生成さlist2れたものがメモリに収まらない場合 (これはかなり遠いと思います)、結果を出力ファイルに継続的に書き戻すことで機能させることができます。

with open("file2.txt") as f:
    with open("out.txt", "w") as out:
        for line in f:
            if line in file1_set:
                out.write(line)
于 2012-04-21T13:13:13.993 に答える
3

どのファイルも過度に大きくない限り、すべての行をセットに保存し、それらのセットを比較します。

lines_1 = set(f)
lines_2 = set(f1)
lines_in_both = lines_1 & lines_2
于 2012-04-21T12:52:24.403 に答える
2

2 つのファイルの違いを見つけようとしている場合は、python 標準ライブラリに含まれている difflib モジュールを使用することもできます。このモジュールは、シーケンスを比較するためのクラスと関数を提供します。たとえば、ファイルの比較に使用でき、HTML、コンテキスト、および統合差分など、さまざまな形式で差分情報を生成できます。便利な比較方法については、difflib のドキュメントを参照してください。

difflib.SequenceMatcher(None, file1.read(), file2.read())
于 2012-04-21T13:41:37.487 に答える