我正在尝试维护一个名称和时间列表,按时间递增排序。
def listfile (name, time):
players = []
strtime = str(time)
players.append((name, strtime))
with open("playersScores.txt", "r") as f:
for line in f:
if line != '\n':
name, strtime = line.split(',')
players.append((name, strtime))
f.close()
players.sort(key=lambda tup: tup[1])
with open("playersScores.txt", "w") as f:
for (name, strtime) in players:
f.write("%s\n" % (name + "," + strtime))
f.close()
这基本上是有效的,但它在每一行下面都留下了一个空行,除了新添加的行。
我想要这样的东西:
Bob,32.82
Bill,34.22
Joe,39.09
Bob,45.23
George,46.08
但我得到:
Bob,32.82
Bill,34.22
Joe,39.09
Bob,45.23
George,46.08
Bill,34.22 是最后一个条目。
请您参考如下方法:
问题是在读取文件时,每行末尾的 \n 不会自动被剥离。在此处显示的代码中,变量 strtime 末尾仍包含一个 \n 字符。
name, strtime = line.split(',')
players.append((name, strtime))
f.write() 调用中的\n 没问题。你只需要在阅读时去掉 \n 即可。 rstrip() 将从字符串右侧删除空白字符。
这样做:
name, strtime = line.split(',')
players.append((name, strtime.rstrip()))
