希望有解决这个问题的建议
我有两个文本文件A和B
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
我想要的是选择B中的所有行元素,其中通过连接前两行元素得到的唯一键值匹配,并将这些行写入新文件C.
基于示例文件A和B;
C =
23,34,67,56,99,98
65,113,77,99,114,45
输入文件通常都有100 000行 感谢您的帮助
答案 0 :(得分:1)
此处有CSV文件,因此请使用csv
module来读取和写入这些文件。使用一个集来存储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行的前两列转换为元组以满足该要求。