好的我有一个程序通过使用代码输出用户的名字,姓氏和得分到一个字符串(逗号分隔):
result=','.join((strFirstName,strLastName,str(score),"\n"))
然后我可以使用以下代码将其写入CSV文件:
file=open("filename.csv","a")
file.write(result)
file.close()
这很好但是我希望每个用户最多可以记录3个分数,只保存最新的三个分数。 我无法弄清楚如何实现
答案 0 :(得分:0)
与上述评论一样,您必须使用字典或列表来跟踪csv文件中的用户,然后修改该字典/列表,然后回写到csv。以下是该概念的快速实现:
new_details = dict()
new_details["jack jackson"] = 100
users = dict()
with open("filename.csv", "r") as csv_file:
for line in csv_file:
line = line.strip().split(",")
users[line[0]+" "+line[1]] = line[2:]
with open("filename.csv", "w") as csv_file:
for user in users:
user_details = user.split()
if (user in new_details):
if len(users[user]) >= 3:
user_details += users[user][1:] + [str(new_details[user])]
else:
user_details += users[user] + [str(new_details[user])]
else:
user_details += users[user]
csv_file.write(','.join(user_details) + "\n")
for user in new_details:
if user not in users:
user_details = user.split() + [str(new_details[user])]
csv_file.write(','.join(user_details)+"\n")
所有内容都基于使用“firstName lastName”键方案的字典。 new_details
将是您获得的新分数数据。在将新用户写入csv之前,它会首先将所有现有用户写入csv(如果存在则添加新分数)。