簡體   English   中英

IndexError:列表索引超出范圍,即使我沒有引用大於列表長度的值?

[英]IndexError: list index out of range even though I do not reference a value greater than the length of the list?

我有以下代碼必須運行。

Solar = ['Solar',['C','2.6915D-04'],['H','1.0000D+00'],['K','1.0715D-07'],['N','6.7608D-05'],['O','4.8978D-04'],['Ar','2.5119D-06'],['Cl','3.1623D-07'],['Fe','3.1623D-05'],['He','8.5114D-02'],['Mg','3.9811D-05'],['Na','1.7378D-06'],['Si','3.2359D-05'],['Ti','8.9125D-08']]

front = 'cond_initial'

fSolar = open(front+'_'+Solar[0]+'.dat','w')



fin = open(front+'.dat','r')
count = 0
for line in fin:
    count += 1
    if count <= 10: fSolar.write(line)
    if count > 10:
        element = line.split()
        sline = line
        for i in range(1,len(Solar)):
            if element[1] == Solar[i][0]:
                print(element[1])
                sline = line.replace('0.0000D+00',Solar[i][1],1)
        fSolar.write(sline)

但是,當我運行它時,會出現以下錯誤:

    if element[1] == Solar[i][0]:
IndexError: list index out of range

我試過用 2 替換 len(Solar) 來看看這是否是問題所在,但出現了同樣的錯誤。 關於如何解決這個問題的任何想法? 謝謝!

文件中有空行,應跳過。

for line in fin:
    count += 1
    if count <= 10: fSolar.write(line)
    if count > 10:
        element = line.split()
        if len(element) < 2:
            continue # skip lines with < 2 columns
        sline = line
        for i in range(1,len(Solar)):
            if element[1] == Solar[i][0]:
                print(element[1])
                sline = line.replace('0.0000D+00',Solar[i][1],1)
        fSolar.write(sline)

暫無
暫無

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

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