如何使用DictWriter替换CSV文件中的pin字段值?
实现CSV中Pin值的替换操作
要替换CSV里指定条目的pin值,不能直接追加写入,得通过「读取全部数据→修改目标条目→重新写入文件」的流程实现,具体方案如下:
解决方案代码
import csv def update_pin(target_name, new_pin): # 读取CSV所有数据并保存表头 all_rows = [] with open("data.csv", 'r') as read_file: reader = csv.DictReader(read_file) field_names = reader.fieldnames for row in reader: # 匹配到目标name时更新pin值 if row["name"] == target_name: row["pin"] = new_pin all_rows.append(row) # 将修改后的数据重新写入CSV with open("data.csv", 'w', newline='') as write_file: writer = csv.DictWriter(write_file, fieldnames=field_names) writer.writeheader() # 写入表头 writer.writerows(all_rows) # 示例调用:把john的pin替换为9999 update_pin("john", "9999")
关键说明
- 原代码使用
'a'追加模式打开文件,只会在文件末尾新增行,无法修改已有内容,这是核心问题所在 - 读取阶段用
DictReader按字典格式读取每行数据,便于直接修改指定字段 - 写入阶段用
'w'覆盖模式打开文件,先写入表头再写入所有修改后的行,newline=''参数可避免Windows系统下出现多余空行
内容的提问来源于stack exchange,提问作者Nitesh Gautam
相关产品推荐
相关产品推荐

