Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将元组列表正确写入.txt文件?_Python_List_File_Sorted - Fatal编程技术网

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

Python 如何将元组列表正确写入.txt文件?,python,list,file,sorted,Python,List,File,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

我试图维护一个列表,一个名字和时间,按时间的增加排序

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()))

问题是,读取文件时,每行末尾都有一个\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()))

由于您创建的是一个.csv文件,所以您还可以查看csv模块

请注意,如果删除行,这将导致一些奇怪的错误。这不会在写入之前截断文件-您正在覆盖数据,因此

1
3
5
7

我会给你

2
4
8
7  # oops!

由于您创建的是一个.csv文件,所以您还可以查看csv模块

请注意,如果删除行,这将导致一些奇怪的错误。这不会在写入之前截断文件-您正在覆盖数据,因此

1
3
5
7

我会给你

2
4
8
7  # oops!

去掉f.write中的\n,除非文件本身必须是纯文本可读的,否则可以研究使用Pickle模块,而不是文件必须是人类可读的吗?这似乎是我的工作!这会将所有内容保留在一行上。专门请求了一个.txt文件。请去掉f.write中的\n,除非文件本身必须是纯文本可读的,否则您可以研究使用Pickle模块来代替。该文件必须是人类可读的吗?这似乎是我的工作!这将把所有内容都放在一行上。一个.txt文件是专门请求的。确实如此。排队,脱衣,分开。。。这是一个常见的成语,有其原因!:该死,比我的评论快一点。这应该是正确的答案。确实如此。排队,脱衣,分开。。。这是一个常见的成语,有其原因!:该死,比我的评论快一点。这应该是正确的答案。