【发布时间】:2021-04-05 10:14:13
【问题描述】:
我在这里看到过很多这样的问题,但没有一个解决方案对我有帮助。所以假设我们有两个这样的 csv 文件:
文件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
【问题讨论】:
-
这能回答你的问题吗? stackoverflow.com/a/5269042/13273054