python - 通过关键数据使用 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()
推荐阅读
- flutter - 有没有办法向地图的 Mapbox 添加自定义图标?
- javascript - 根据事件更改与 dom 相关的元素
- keras - 如何在keras的GRU末尾添加Cov2D
- jquery-ui - 如何将 jquery-ui 可排序列表中的项目放入该列表中的另一个项目中
- c# - 如何在foreach循环的每一行中放置引导4列
- database - Flutter/Dart 延迟加载数据库中的查询结果
- javascript - 切换选项无法正确使用 useState
- javascript - 无论大小写如何,按字母顺序对字符串进行排序 - JavaScript
- c++ - put_money 是否通过值或引用来持有它的论点?
- sql - 从s3加载到redshift时如何让文件忽略换行错误