我有一个档案里的足球数据。我可以把玩家的名字和每个属性分开两个或更多的空格。我正在尝试获取码的领导者,所以我需要按第4列或第3列索引进行排序。在
我的代码是:
import re, sys
try:
file = open("TTL.txt", "r")
except IOError:
print "Could Not Open TTL"
sys.exit()
lines = file.readlines()
for line in lines:
line = re.split("\s\s+", line)
def key_fct(lines):
return (float(lines[3]))
srtlines = sorted(lines, key = key_fct, reverse = True)
for line in srtlines:
print line
file.close()
样本输入:
^{pr2}$我有两个错误:
$./sort.py
Traceback (most recent call last):
File "./sort.py", line 39, in <module>
srtlines = sorted(lines, key = key_fct, reverse=True)
File "./sort.py", line 37, in key_fct
return (float(lines[3]))
ValueError: invalid literal for float(): l
我的文件不是一个列表列表,但是如果我拆分每一行并尝试按第三个索引排序,我仍然会在文件的名字中得到第四个字符。在
这里的问题是以下代码:
这并不像您所期望的那样将行重新分配到列表中。你根本就没有改变路线。我建议创建一个新的列表,如下所示:
^{pr2}$或者使用索引:
希望这对你有帮助!在
你的问题是:
你不能像这样修改列表的值-你只是给变量分配一个新值,然后在下次循环运行时替换它。这根本没用。在
相反,请使用list comprehension来构造一个新列表:
^{pr2}$代码的问题是,您正在迭代
lines
,但是在循环中为line
分配一个新值并不会修改原始列表的内容。它仍然是一个字符串列表,因此lines[3]
实际上从每一行返回第三个字符,而不是您期望的第三个项目。在您可以:
^{pr2}$或更好:
相关问题 更多 >
编程相关推荐