我对python3很新,我相信我的问题非常基础。 我一直在网上寻求一些帮助,而我最接近的是线程 Find Common Region in two CSV File in PYTHON
然而在我的情况下,它似乎没有迭代遍历每一行并停在第一个。 所以在我的第一个csv我有2行,让我们说:
A,1,A 1
B,2,B2
现在在我的第二个csv中我有一千行,类似
A,1,B5
A,2,A2
B,2,C6
B,3,C7
C,3,D7
C,如图4所示,D8
...
我的代码如下:
read1 = csv.reader(csv1)
for row1 in read1:
read2 = csv.reader(csv2)
for row2 in read2:
if row1[0] == row2[0] and row1[1] == row2[1]:
print('There is a match', row1[0], row1[1])
然而,我的输出是 有一场比赛A 1 它只找到第一场比赛,而不是另一场比赛:B 2 我不确定迭代中出了什么问题:
提前感谢您的帮助
答案 0 :(得分:1)
首次传递循环后,文件csv2
将位于文件末尾。后续读取将返回一个空字符串。即使您使用相同的文件对象创建新的CSV阅读器也是如此。因此,找不到第二个匹配项,因为实际上没有处理第二个文件。
最简单的解决方案是在处理完第二个文件后调用csv2.seek(0)
,即:
read1 = csv.reader(csv1)
for row1 in read1:
read2 = csv.reader(csv2)
for row2 in read2:
if row1[0] == row2[0] and row1[1] == row2[1]:
print('There is a match', row1[0], row1[1])
csv2.seek(0)
答案 1 :(得分:0)
将内容放入列表中:
import csv
with open(file1) as f1,open(file2) as f2:
rd1, rd2 = csv.reader(f1) ,list(csv.reader(f2))
for row1 in rd1:
for row2 in rd2:
if row1[0] == row2[0] and row1[1] == row2[1]:
print('There is a match', row1[0], row1[1])