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



所以我试图创建一个函数,用户将在其中输入一个唯一的标识符(在本例中是第一列中的一个数字(,这样他们就可以在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

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

您想要替换列表中的现有项,可以通过引用该项的索引直接执行此操作。

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

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

最新更新