You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python删除CSV指定行时新增多条重复首行问题求助

问题原因
  • 逻辑顺序错误:读入每行时先追加到列表再判断删除,边遍历边修改列表会触发迭代索引异常,出现漏读、重复写入的问题。
  • 匹配逻辑冗余:逐字段遍历匹配目标名称,不仅效率低,还可能出现其他字段值和目标名称一致时的误删问题,本需求只需匹配Name列(每行的第2个字段,索引为1)即可。
  • 列表残留问题:你没有在每次运行代码前清空attractions列表,之前运行残留的表头数据会被重复写入文件,这也是你看到多份重复表头的核心原因。另外list.remove()方法会删除列表中第一个匹配的元素,你删除数据行时可能误删已加入列表的表头,后续迭代逻辑混乱后又会重复写入表头。
修复后的代码

直接先全量读取CSV内容,再统一过滤不需要删除的行,完全规避边读边改的问题:

import csv

# 这里保留你原有获取待删除名称的逻辑
def entername():
    return input("请输入要删除的景点名称:")

name = entername()
# 每次运行前清空列表,避免旧数据残留
attractions = []

with open('boston.csv', 'r', encoding='utf-8') as csv_read:
    reader = csv.reader(csv_read)
    # 单独读取表头,避免被误删
    header = next(reader)
    attractions.append(header)
    # 读取所有数据行
    for row in reader:
        attractions.append(row)

# 统一过滤:保留表头 + 所有Name列不匹配目标名称的数据行
attractions = [attractions[0]] + [row for row in attractions[1:] if row[1] != name]

# 写入时加newline参数,避免Windows系统下生成空行
with open('boston.csv', 'w', encoding='utf-8', newline='') as csv_write:
    writer = csv.writer(csv_write)
    writer.writerows(attractions)

内容的提问来源于stack exchange,提问作者ttugg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 05:54:03