繁体   English   中英

没有遍历csv文件python3的所有行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM