使用Python附加/更新CSV文件中特定行中的数据

2024-04-19 18:12:03 发布

您现在位置:Python中文网/ 问答频道 /正文

好的,我有一个程序,输出用户的名字,姓和分数到一个字符串(逗号分隔),使用代码:

result=','.join((strFirstName,strLastName,str(score),"\n"))

然后我可以使用以下代码将其写入CSV文件:

^{pr2}$

这工作很好,但我希望能够记录每个用户最多3个分数,它只保存他们最近的三个分数。 我不知道怎样才能达到目的

  1. 仅当用户不存在时才写入新行
  2. 用最新分数更新现有用户,只替换最旧的分数

Tags: 文件csv字符串代码用户程序result名字
1条回答
网友
1楼 · 发布于 2024-04-19 18:12:03

就像上面提到的注释一样,您必须使用字典或列表从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。在

相关问题 更多 >