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

Python过滤CSV数据问题:索引排序与多余空格修复求助

解决方案代码
import csv

# 读取输入CSV并处理多余空格
with open('input.csv', 'r', newline='') as infile:
    # skipinitialspace=True 会忽略逗号后的多余空格,得到干净的字段值
    reader = csv.DictReader(infile, skipinitialspace=True)
    rows = list(reader)

# 筛选名字以元音结尾的行(不区分大小写)
vowel_end = {'a', 'e', 'i', 'o', 'u'}
filtered_rows = [
    row for row in rows 
    if row['name'].strip().lower()[-1] in vowel_end
]

# 生成符合要求的输出内容,修复索引和格式
output_lines = ["index,    name,     id,  status"]  # 匹配原格式的表头
for new_idx, row in enumerate(filtered_rows, start=1):
    # 按原格式拼接每行内容,确保空格数量一致
    line = f"{new_idx},        {row['name']},     {row['id']},  {row['status']}"
    output_lines.append(line)

# 写入输出CSV
with open('output.csv', 'w', newline='') as outfile:
    outfile.write('\n'.join(output_lines))

问题修复说明

1. 索引序号顺序不正确的问题

原代码大概率直接保留了输入CSV中的原始index值,导致筛选后索引不连续。解决方案是用enumerate(filtered_rows, start=1)生成新的连续索引,从1开始递增,替换原有的index字段值。

2. 每行多余空格的问题

  • 读取阶段:使用csv.DictReader的skipinitialspace=True参数,自动忽略逗号后面的多余空格,避免读取到带空格的字段值(比如原CSV中name字段的" Anne"会被处理成"Anne")。
  • 写入阶段:放弃使用csv.writer(它会默认用单一逗号分隔,无法保留原格式的多空格),而是手动按原格式拼接每行字符串,确保空格数量和预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:50:33