【发布时间】:2020-06-06 17:22:57
【问题描述】:
我必须运行以下代码。
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
我尝试将 len(Solar) 替换为 2 以查看是否是问题所在,但出现了同样的错误。 关于如何解决这个问题的任何想法?谢谢!
【问题讨论】:
-
代码假定元素的长度为 2 (
element[1]) - 你确定这是真的吗? -
您实际询问的是哪个版本的 Python?
-
我完全同意@balderman 唯一的问题是
element[1] -
检查您的文件,确保所有行至少有 2 列。注意空行。特别是末尾可能有一个空行。
-
@Barmar 我想你明白了!当我打印元素时,最后一行是空白的。我如何删除它,因为我使用 '''element = line.split()''' 定义它
标签: python python-3.x list python-2.7 indexing