编辑:现在可以正常工作了,谢谢。有人评论
时,文本文件上的空白行这里的初学者-我收到一条错误消息,说列表索引超出范围,但是我引用的是列表中应该在范围内的位置。错误出现在“ courseGPA = GPAconverter(line [2])”行上,该行调用了我的函数GPAconverter。
我正在尝试创建一个程序,该程序读取包含课程,该课程的权重和该课程的成绩的文本文件的每一行。我希望它阅读课程成绩,通过我创建的功能将其转换为GPA。然后最终我希望代码输出我的最终GPA。
txt文件的格式为:
数学,0.5、80
for line in inputFile:
line = line.rstrip()
line = line.split(",")
courseGPA = GPAconverter(line[2])
if float(line[1]) == 0.5:
count = count + 1
totalGPA += courseGPA
elif float(line[1]) == 1.0:
count = count + 2
totalGPA += 2*(courseGPA)
elif float(line[1]) == 2.0:
count += 4
totalGPA += 4*(courseGPA)
else:
print("Somethings wrong")
答案 0 :(得分:0)
文本文件中的某些记录/行很有可能少于3个令牌,最好在解析或传递令牌之前先清理令牌的数量。
答案 1 :(得分:0)
我认为这是您想要的:
def GPAconverter(param):
#do something
with open("yourfile.txt") as file:
inputFile = file.readlines()
count = 0
totalGPA = 0
for line in inputFile:
line = line.rstrip()
line = line.split(",")
courseGPA = GPAconverter(line[2])
if float(line[1]) == 0.5:
count = count + 1
totalGPA += float(courseGPA)
elif float(line[1]) == 1.0:
count = count + 2
totalGPA += 2*float(courseGPA)
elif float(line[1]) == 2.0:
count += 4
totalGPA += 4*float(courseGPA)
else:
print("Something is wrong")
print(totalGPA)
yourfile.txt
的内容:
Math, 0.5, 80
Math, 0.5, 80
Math, 0.5, 80
Math, 0.5, 80
Math, 0.5, 80
Math, 0.5, 80
Math, 0.5, 80
Math, 0.5, 80
Math, 0.5, 80
Math, 0.5, 80
...
...
您应该可以用所需的内容替换内容,但是内容必须至少有三列,并且第二个和第三个元素必须是数字,否则将引发错误,除非您编辑代码以使其工作不同
正如@Devesh Kumar Singh所说,文件中可能有空行。此代码应删除它们:
import fileinput
for line in fileinput.FileInput("file",inplace=1):
if line.rstrip():
print line
来源:How to delete all blank lines in the file with the help of python?,@ ghostdog74