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

Python CSV姓名拆分写入:解决输出带括号与逗号问题求助

问题分析与解决方案

问题根源

  1. 错误处理CSV读取结果:csv.reader读取每一行返回的是列表对象(比如['Tom Holl']),你用str(i)把列表转成字符串后,会带上方括号和单引号(变成"['Tom Holl']"),拆分后这些符号会混入结果。
  2. writerow使用不当:csv.writer.writerow()接收可迭代对象,如果你传入单个字符串(比如'Tom'),它会把字符串的每个字符当作单独列,导致输出出现逗号分隔每个字符的情况。

修正后的代码

import csv

# 一次性打开输入输出文件,避免循环内重复IO操作
with open('random_first_names.txt', 'r', encoding='UTF-8') as f, \
     open('edit_random_first_names.txt', 'w', encoding='UTF-8') as f1:
    reader = csv.reader(f, delimiter="\n")
    writer = csv.writer(f1, lineterminator="\n")
    
    for row in reader:
        # 取出列表中的唯一元素(整行姓名),同时去掉首尾空白
        full_name = row[0].strip()
        # 按空格拆分姓名,split()自动处理多个空格的情况
        name_parts = full_name.split()
        for part in name_parts:
            # 用列表包装单个字符串,确保整串作为一列写入
            writer.writerow([part])

代码说明

  • 直接取row[0]获取整行姓名字符串,避免将列表转成带符号的字符串。
  • 使用split()(不带参数)拆分姓名,自动处理姓名中可能的多个空格,同时过滤空字符串。
  • 将输出文件的打开操作放在循环外,减少IO开销;用w模式覆盖写入(需要追加可改成a)。
  • 写入时用[part]把单个字符串包装成列表,确保writerow将其作为完整一列写入,不会拆分字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 14:53:15