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文件是专门请求的。确实如此。排队,脱衣,分开。。。这是一个常见的成语,有其原因!:该死,比我的评论快一点。这应该是正确的答案。确实如此。排队,脱衣,分开。。。这是一个常见的成语,有其原因!:该死,比我的评论快一点。这应该是正确的答案。