繁体   English   中英

如果嵌套``for''循环中的语句仅评估一次-python

[英]If statement inside nested 'for' loops is evaluating only once - python

我正在编写一个代码,将文件1(条目的单列)与文件2(条目的3列)进行比较,并根据第一列从文件2中获取匹配的记录。 问题是它只评估一次循环。

文件1:

ABC

DEF

JKL

文件2:

IJK,123,SDF

ABC,456,HJK

QWE,876,GFT

JKL,098,HGF

.....

我的代码:

for entry in fh_file1:
    mir = entry.strip('\n')
    print(mir)
    for row in fh_file2:
        row_splt = row.split(',')             
        print(row_splt[0])
        if mir in row_splt[0]:
            print (row.strip('\n'))
        else:
            pass

该代码的结果:

只是文件1的第一个条目的匹配项:

ABC 456 HJK

请帮我。

文件是数据流。 遍历它们时,您一次阅读一行。 在内部循环的末尾,该文件已到达末尾。 它不会在外循环的下一次迭代的开始处再次开始,因为这不是文件的工作方式。

通常,您应该首先将文件读入内存: list(fh_file1)将为您提供行的list ,您可以根据需要循环多次。

您需要在第二个for循环之前添加fh_file2.seek(0)才能从文件开头开始。

但是,最好将其读入内存一次,这样会更好:

file2_lines = fh.file2.readlines()

然后遍历file2_lines 从磁盘读取另一个文件中每一行的文件将非常缓慢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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