[英]Not Iterating through all lines from a csv file python3
我是python3的新手,我敢肯定我的问题是非常基本的。 我一直在网上寻求帮助,而我最接近的是来自PYTHON中两个CSV文件中的“查找公用区域”线程
但是就我而言,似乎并没有遍历每一行并在第一行停止。 因此,在我的第一个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我不确定在迭代中出了什么问题:
预先感谢您的帮助
在循环的第一遍之后,文件csv2
将位于文件末尾。 随后的读取将返回一个空字符串。 即使使用相同的文件对象创建新的CSV阅读器,也是如此。 因此,找不到第二个匹配项,因为实际上未处理第二个文件。
最简单的解决方案是在处理第二个文件(即csv2.seek(0)
后调用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)
将内容放在列表中:
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])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.