我有一些代码,它的功能是读取名为' class1results.txt'的文件,并在shell中以数字方式打印信息。当我运行代码时,当文件被排序时,会出现此错误:IndexError: list index out of range
我已经完成了脚本,我还没有看到我出错的地方,有人修复了吗?
以下是文本文件的内容:
`Ryan | 7`
`Daniel | 8`
`Joe | 10`
`Anna | 6`
`Cameron | 5`
`Mark | 3`
`Beth | 5`
以下是代码:
def numberSort1 ():
s=open('class1results.txt','r').read()
l=s.split('\n')
print('Here are the results in numerical order: ')
print (('\n').join(sorted(l,key=lambda x : int(x.split('|')[1].strip()))))
ask()
question = input("Which group do you want to sort? 1, 2 or 3? ")
if question == "1":
numberSort1()
非常感谢所有帮助!
答案 0 :(得分:0)
更改行
l=s.split('\n')
到
l = s.splitlines()
前者在列表l
的最后一项中包含空字符串,而后者则不包括。所以,将代码更改为:
def numberSort1 ():
l = open('class1results.txt','r').read().splitlines()
print('Here are the results in numerical order: ')
print (('\n').join(sorted(l,key=lambda x : int(x.split('|')[1].strip()))))
# ask()
numberSort1()
class1results.txt
包含
Ryan | 7 Daniel | 8 Joe | 10 Anna | 6 Cameron | 5 Mark | 3 Beth | 5
以下输出没有错误:
Here are the results in numerical order: Mark | 3 Cameron | 5 Beth | 5 Anna | 6 Ryan | 7 Daniel | 8 Joe | 10
答案 1 :(得分:0)
这是否可以通过任何机会修复您的代码(使用条件if '|' in x else ''
)?
def numberSort1 ():
s=open('class1results.txt','r').read()
l=s.split('\n')
print('Here are the results in numerical order: ')
print (('\n').join(
sorted(l,key=lambda x : int(x.split('|')[1].strip()) if '|' in x else '')
))
ask()
question = input("Which group do you want to sort? 1, 2 or 3? ")
if question == "1":
numberSort1()