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

Python CSV文件移除姓氏功能失效:问题排查与解决请求

CSV文件姓名列去姓氏问题排查与修复

问题背景

需要处理CSV文件,从姓名列移除姓氏仅保留名字,但运行提供的Python代码后,生成的修改文件内容完全无变化。CSV输入用分号;分隔,示例输入和期望输出如下:

输入示例:

Name;Firstname Secondname;10EH2;
Name;Firstname-Secondname;10EH3;
Name;Firstname Secondname OtherName;10EH3;

期望输出:

Name;Firstname;10EH2;
Name;Firstname;10EH3;
Name;Firstname;10EH3;

错误原因分析

  • 分隔符不匹配:你的CSV文件用分号;作为列分隔符,但代码里的csv.reader和csv.writer都指定了delimiter='\t'(制表符)。这会导致CSV读取器把整行内容当成单个单元格,row的长度始终为1,永远不会触发len(row)>=2的修改逻辑,自然不会有任何内容变化。
  • 姓名拆分逻辑不全:原代码只处理了空格分隔的姓名,但输入里存在Firstname-Secondname这种连字符连接的情况,按空格拆分无法提取出纯名字。
  • 冗余代码:循环里的rows[i] = row是多余的——因为row是列表的引用,直接修改row[1]就会同步到rows列表中,这行代码不会造成错误,但没必要保留。

修复后的代码

import csv
import os

def remove_second_names(full_name):
    # 先按空格拆分,取第一部分
    name_part = full_name.split()[0]
    # 再按连字符拆分,取第一部分(处理Firstname-Secondname的情况)
    first_name = name_part.split('-')[0]
    # 统一首字母大写,其余小写的格式
    first_name = first_name[0].upper() + first_name[1:].lower()
    return first_name

csv_file_path = input("请输入CSV文件路径: ")

try:
    # 把分隔符改成CSV实际使用的分号;
    with open(csv_file_path, 'r', newline='', encoding='utf-8') as file:
        reader = csv.reader(file, delimiter=';')
        rows = list(reader)

    # 遍历每行,修改姓名列(索引1)
    for row in rows:
        # 确保行有足够的列数,避免索引越界
        if len(row) >= 2:
            row[1] = remove_second_names(row[1])

    base_file_name = os.path.basename(csv_file_path)
    output_file_path = base_file_name.replace('.csv', '_处理后.csv')

    # 写入时同样用分号作为分隔符
    with open(output_file_path, 'w', newline='', encoding='utf-8') as file:
        writer = csv.writer(file, delimiter=';')
        writer.writerows(rows)

    print(f"处理后的数据已写入文件: {output_file_path}")

except FileNotFoundError:
    print("指定的文件未找到。")
except Exception as e:
    print(f"发生错误: {str(e)}")

修复说明

  • 将csv.reader和csv.writer的delimiter参数改为;,匹配CSV文件的实际分隔符。
  • 优化姓名拆分逻辑:先按空格取第一部分,再按连字符取第一部分,覆盖两种姓名格式。
  • 移除冗余的rows[i] = row代码,简化逻辑。
  • 添加encoding='utf-8'参数,避免中文或特殊字符出现编码问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 12:26:09