0

これを解決するための提案があることを願っています

A と B の 2 つのテキスト ファイルがあります
A=

23,34,67,56  
45,66,86,98  
65,113,77,99  

B=

11,34,58,99,109,24  
23,34,67,56,99,98  
55,100,75,45,44,90  
65,113,77,99,114,45  

私が望むのは、最初の 2 つの行要素を連結して作成された一意のキー値が一致する B のすべての行要素を選択し、これらの行を新しいファイル C に書き込むことです。

サンプルファイルAとBに基づいています。
C=

23,34,67,56,99,98  
65,113,77,99,114,45

入力ファイルはどちらも通常 100,000 行あります。ご協力ありがとうございます

4

1 に答える 1

1

ここに CSV ファイルがあるので、csvモジュールを使用してこれらのファイルを読み書きします。セットを使用して A からの一意のキーを格納し、そのセットを使用して B からの行をフィルター処理します。

import csv

with open(A, 'rb') as file_a:
    selected = {tuple(row[:2]) for row in csv.reader(file_a)}

with open(B, 'rb') as file_b, open(C, 'wb') as file_c:
    reader = csv.reader(file_b)
    writer = csv.writer(file_c)
    writer.writerows(row for row in reader if tuple(row[:2]) in selected)

辞書と同様に、セットはハッシュ可能な値しか格納できないことに注意してください。そのため、各 CSV 行の最初の 2 列をタプルに変換して、その要件に適合させます。

于 2013-08-07T08:44:56.310 に答える