比较两个csv文件,并在第三个文件python中写入匹配的条目



我在这里看到了很多这样的问题,但没有一个解决方案对我有帮助

文件1

12345:somevalue:anothervalue
23456:yetanother:onemore
23423:somevalue:anothervalue
41231:somevalue:anothervalue

文件2

12345:desiredvalue:desiredvalue:andonemore
22334:desiredvalue:desiredvalue:andonemore
23456:desiredvalue:desiredvalue:andonemore
32213:desiredvalue:desiredvalue:andonemore
54412:desiredvalue:desiredvalue:andonemore
64123:desiredvalue:desiredvalue:andonemore

所需的结果是:根据file1中第一列的数字,我需要获得file2中起始编号相同的行,并将匹配的值写入file3,该值应如下所示:

12345:desiredvalue:desiredvalue:andonemore
23456:desiredvalue:desiredvalue:andonemore

我试过这样:

with open('file1', 'r', newline='') as file1, open('file2.csv', 'r', newline='') as file2:
reader = csv.reader(file1, delimiter=':')
reader1 = csv.reader(file2, delimiter=':')
for row in reader:
for row1 in reader1:
if row[0] in row1[0]:
with open('file3.csv', "w", encoding='utf-8',newline='') as csv_file:
writer = csv.writer(csv_file, delimiter=':')
writer.writerow(row1)

示例代码有效。。部分。我得到的结果是只有一排,而有更多的比赛。我错过了什么?

编辑:我找到了-在第二次for循环后我丢失了break

if row[0] == row1[0]:
writer.writerow(row1)
break

每次都要重写输出文件。更改";w";至";a+":

打开('file3.csv',"a+",编码…

最新更新