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