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

如何用Python的csvReader拆分CSV单元格中|分隔内容为多列?

解决方案:拆分CSV中指定列的多值内容为独立列

没问题,我来帮你搞定这个需求!用Python标准库的csv模块就能轻松实现,步骤清晰且容易理解:

核心思路

  • 读取原CSV的每一行数据,定位到第3列(注意Python索引从0开始,对应索引2)
  • 用split('|')把该列的内容拆分成列表
  • 为保证新CSV列数统一,把拆分后的列表补全到5个元素(不足的用空字符串填充)
  • 修改表头,将原来的目标列替换为5个新列名(比如原列名为transport,则改为transport_1到transport_5)
  • 将处理后的数据写入新CSV文件

完整代码示例

import csv

# 替换成你实际的文件路径
input_file = 'input.csv'
output_file = 'output.csv'

# 目标列是第3列,对应索引2
target_col_index = 2

with open(input_file, 'r', newline='', encoding='utf-8') as infile, \
     open(output_file, 'w', newline='', encoding='utf-8') as outfile:
    
    reader = csv.reader(infile)
    writer = csv.writer(outfile)
    
    # 处理表头:替换目标列为拆分后的新列
    header = next(reader)
    target_col_name = header.pop(target_col_index)
    new_columns = [f"{target_col_name}_{i+1}" for i in range(5)]
    header[target_col_index:target_col_index] = new_columns
    writer.writerow(header)
    
    # 逐行处理数据
    for row in reader:
        # 拆分目标列内容
        target_values = row[target_col_index].split('|')
        # 补全到5个元素,避免列数不一致
        target_values = target_values.ljust(5, '')
        # 替换原列内容为拆分后的列表
        row.pop(target_col_index)
        row[target_col_index:target_col_index] = target_values
        writer.writerow(row)

print("处理完成!新CSV文件已生成。")

代码说明

  1. 文件路径:记得把input.csv和output.csv替换成你实际的文件路径
  2. 目标列索引:如果你的第3列索引不是2(比如CSV有特殊格式),直接调整target_col_index的值即可
  3. 补全元素:用ljust(5, '')确保不管拆分出1-5个值,都能对应5列,避免写入时列数混乱
  4. 编码设置:添加encoding='utf-8'是为了兼容中文等非ASCII字符,防止出现乱码

可选调整

如果你想保留原目标列,只在后面追加拆分后的列,可以修改表头和行处理逻辑:

# 处理表头:把新列追加到末尾
header.extend(new_columns)
writer.writerow(header)

# 处理每一行:把拆分后的值追加到行末尾
row.extend(target_values)
writer.writerow(row)

这样原列会被保留,拆分后的5列会加到CSV的最后面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:26:40