我在这里看到了很多这样的问题,但没有一个解决方案对我有帮助
文件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+",编码…