使用 Python 按关键数据更改 CSV 中的一行

Change a row in a CSV with Python by key data

所以我正在尝试创建一个函数,用户将在其中输入一个唯一标识符(在本例中为第一列中的数字),这样他们就可以在 CSV 中编辑该行中的详细信息。我快接近了,但不是编辑,或者至少是删除原始行并放入新行,而是将其添加到末尾。非常感谢任何帮助。弹出我到目前为止的内容,我很可能会咆哮完全错误的虚拟树....

reference = "2"

fi = open('mylovelycsv.csv', 'r')
calls = []
while True:
    call = fi.readline()
    if not call:
        break
    fields = call.split(',')
    calls.append(call)
    if fields[0] == reference:
        fields[1] = "This is a new bit of information"
        new_details = ','.join(fields)
calls.append(new_details)
fi.close()

fo = open('mylovelycsv.csv', 'w')
for row in calls:
    fo.write(row)
fo.close()

CSV 的想法...

1, blue, to go to the moon
2, orange, to swim with dolphins
3, black, to have a big house and lots of money

您不应该使用追加,因为它会追加到列表的末尾。

您想替换列表中的现有项目,您可以通过索引直接引用它来完成。

下面的代码就是这样做的,但可能还有更好的方法

reference = "2"
idx = 0 
fi = open('test.csv', 'r')
calls = []
while True:
    call = fi.readline()

    if not call:
        break
    calls.append(call)
    
    fields = call.split(',')
    if fields[0] == reference:
        fields[1] = "This is a new bit of information"
        new_details = ','.join(fields)
        calls[idx] = new_details
    idx+=1
fi.close()

fo = open('mylovelycsv.csv', 'w')
for row in calls:
    fo.write(row)
fo.close()