我尝试比较2个csv文件,然后把共同的条目放在第三个csv文件中写入文件。由于某种原因,它迭代整个循环的行在csv_input,但在csv_compare循环的条目只迭代一次,并停止在最后一个条目。我想比较每一行条目与每一个条目条目。
import csv
finalCSV = {}
with open('input.csv', newline='') as csvfile, open('compare.csv', newline='') as keyCSVFile, open('output.csv', 'w' ,newline='') as OutputCSV:
csv_input = csv.reader(csvfile)
csv_compare = csv.reader(keyCSVFile)
csv_output = csv.writer(OutputCSV)
csv_output.writerow(next(csv_input))
for row in csv_input:
for entry in csv_compare:
print(row[0] + ' ' + entry[0])
if row[0] == entry[0]:
csv_output.writerow(row)
break
print('wait...')
3条答案
按热度按时间ljsrvy3e1#
当你中断内部循环并开始外部循环的下一次迭代时,
csv_compare
不会重置到开始,它会从你停止的地方继续,一旦你用完了迭代器,就结束了。您需要在外部循环的每次迭代的顶部重置迭代器,这最容易通过简单地打开那里的文件来完成。
lxkprmvk2#
我建议从
csv_compare
读取第一列到list或set,然后只使用单个for循环:xt0899hw3#
您可以完全跳过内部循环。当第一列与
compare.csv
中的任何第一列值匹配时,您可以添加input.csv
中的行。因此,将这些值放在一个集合中以便于查找。