Python:比较两个文本文件中的信息并将匹配信息写入新文件

时间:2013-08-07 08:40:10

标签: python csv python-2.7

希望有解决这个问题的建议

我有两个文本文件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行 感谢您的帮助

1 个答案:

答案 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行的前两列转换为元组以满足该要求。

相关问题