如何正确地将元组列表写入.txt文件?

T. *_*key 1 python file list sorted

我试图按名称和时间维护列表,按时间增加排序.

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() 
Run Code Online (Sandbox Code Playgroud)

这基本上有效但除了新添加的行之外,它在每行下面留下一个空行.

我想要像:

Bob,32.82
Bill,34.22
Joe,39.09
Bob,45.23
George,46.08
Run Code Online (Sandbox Code Playgroud)

但我得到了:

Bob,32.82

Bill,34.22
Joe,39.09

Bob,45.23

George,46.08
Run Code Online (Sandbox Code Playgroud)

Bill,34.22 是最后一个条目.

Noa*_*oah 5

问题是,当读取文件\n时,每行的末尾都会有一个不会自动被剥离的文件.在此处显示的代码中,变量最后strtime仍包含一个\n字符.

name, strtime = line.split(',')
players.append((name, strtime))
Run Code Online (Sandbox Code Playgroud)

\n在调用f.write()的罚款.你只需要\n在阅读时剥掉它.rstrip()将从字符串的右侧删除空格字符.

做这个:

name, strtime = line.split(',')
players.append((name, strtime.rstrip()))
Run Code Online (Sandbox Code Playgroud)