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

Python读取CSV文件:替换固定行索引为用户输入值及单行删除的技术问题

嘿,我来帮你搞定这两个问题!


1. 解决索引类型错误

你碰到的TypeError是因为用户输入的内容默认是字符串类型,而列表索引必须是整数。比如用input()获取用户选择的数字时,直接把字符串丢进[]里肯定会报错,得先把它转成整数才行。

给你改好的代码示例,还加了索引有效性判断,避免越界报错:

import csv

# 获取用户输入并转为整数
user_row_index = int(input("请输入要读取的行索引(从0开始):"))

with open("DATABASE.csv", "r", newline="") as a:
    csv_reader = csv.DictReader(a)
    rows = list(csv_reader)
    # 先判断索引是否在有效范围内
    if 0 <= user_row_index < len(rows):
        print(rows[user_row_index]["NAME"], rows[user_row_index]["SURNAME"])
    else:
        print("输入的索引超出文件行数范围啦!")

2. 删除CSV文件中的单独一行

要删除CSV里的某一行,核心思路是先读取所有行,过滤掉目标行,再把剩下的内容写回文件。直接修改原文件不太现实,通常是读取后覆盖写入(建议操作前先备份原文件,防止数据丢失)。

用DictReader/DictWriter的示例(保留表头)

import csv

# 获取要删除的行索引(从0开始,对应数据行,表头不算在内)
row_to_delete = int(input("请输入要删除的行索引(从0开始):"))

# 读取所有内容,保存表头和数据行
with open("DATABASE.csv", "r", newline="") as infile:
    reader = csv.DictReader(infile)
    fieldnames = reader.fieldnames  # 保存表头字段
    rows = list(reader)

# 检查索引有效性并删除目标行
if 0 <= row_to_delete < len(rows):
    del rows[row_to_delete]
    # 把过滤后的内容写回文件
    with open("DATABASE.csv", "w", newline="") as outfile:
        writer = csv.DictWriter(outfile, fieldnames=fieldnames)
        writer.writeheader()  # 写入表头
        writer.writerows(rows)  # 写入剩余数据行
    print("指定行已成功删除!")
else:
    print("输入的索引无效,无法执行删除操作!")

用普通csv.reader/writer的示例(表头会被当作第一行)

如果不需要字典式操作,也可以用基础的读取写入方式,注意这里表头会被算成索引0的行:

import csv

row_to_delete = int(input("请输入要删除的行索引(从0开始,表头为第0行):"))

# 读取所有行
with open("DATABASE.csv", "r", newline="") as infile:
    rows = list(csv.reader(infile))

if 0 <= row_to_delete < len(rows):
    del rows[row_to_delete]
    # 写回文件
    with open("DATABASE.csv", "w", newline="") as outfile:
        writer = csv.writer(outfile)
        writer.writerows(rows)
    print("目标行已删除!")
else:
    print("索引超出范围,请重新输入!")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 21:27:38