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