簡體   English   中英

我的Python for循環有什么問題?

[英]What's wrong with my Python for loop?

我打開了兩個文件,EQE_data和Refl_data。 我想獲取每行EQE_data,它將有八個制表符分隔的列,並在Refl_data中找到與之對應的行,然后進行數據分析並將結果寫入輸出。 因此,對於EQE_data中的每一行,我需要搜索整個Refl_data,直到找到正確的一行。 此代碼第一次成功,但每次后續輸出Refl_data的相同結果。 即,我得到Wav1和QE的正確列,但它似乎只執行嵌套for循環一次,所以我得到相同的R,Abs,IQE,這對於第一行是正確的,但此后不正確。

for line in EQE_data:
    try:
        EQE = line.split("\t")
        Wav1, v2, v3, QE, v5, v6, v7, v8 = EQE
        for line in Refl_data:
            Refl = line.split("\t")
            Wav2, R = Refl
            if float(Wav2) == float(Wav1):
                Abs = 1 - (float(R) / 100)
                IQE = float(QE) / Abs
        output.write("%d\t%f\t%f\t%f\t%f\n" % (int(float(Wav1)), float(QE), float(R) / 100, Abs, IQE))
    except:
        pass

如果Refl_data是一個文件,則需要將讀指針放回每個循環的開頭(使用Refl_data.seek(0) ),或者只是重新打開文件。

另外,閱讀所有的Refl_data到列表第一和遍歷該列表來代替。

進一步的建議:使用csv模塊進行制表符分隔數據,不要使用空白try: - except: ; 總是只捕捉特定的例外。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM