IndexError:即使我没有引用大于列表长度的值,列表索引仍超出范围



我必须运行以下代码。

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)

最新更新