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