簡體   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