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

Python中如何基于分隔符拆分CSV指定列生成两行并新增标识列

CSV拆分处理实现方法

以下两种方法都可以实现你要的C列对半拆分、拆行加E列标记的效果,按需选择即可。


方法1:Python脚本(无额外依赖,全平台通用)

用Python自带的csv标准库处理,不需要安装第三方包,自动适配CSV格式转义问题,逻辑稳定:

import csv

# 把这里的文件名改成你自己的输入输出文件路径
input_file = "input.csv"
output_file = "output.csv"

with open(input_file, "r", newline="", encoding="utf-8") as f_in, \
     open(output_file, "w", newline="", encoding="utf-8") as f_out:
    csv_reader = csv.DictReader(f_in)
    # 表头新增E列
    csv_writer = csv.DictWriter(f_out, fieldnames=csv_reader.fieldnames + ["E"])
    csv_writer.writeheader()

    for line in csv_reader:
        # 拆分C列竖线分隔的内容,过滤开头|分割出的空值
        c_items = [item for item in line["C"].split("|") if item]
        mid_pos = len(c_items) // 2
        # 拼回原格式的前后两段C列内容
        c_part1 = "|" + "|".join(c_items[:mid_pos])
        c_part2 = "|" + "|".join(c_items[mid_pos:])
        # 写入前半段行,E=0
        line["C"] = c_part1
        line["E"] = "0"
        csv_writer.writerow(line)
        # 写入后半段行,E=1
        line["C"] = c_part2
        line["E"] = "1"
        csv_writer.writerow(line)

用你提供的示例输入运行后,输出内容完全匹配预期:

A,B,C,D,E
1,2,|3|4|5,9,0
1,2,|6|7|8,9,1
11,12,|13|14|15,19,0
11,12,|16|17|18,19,1

只要C列竖线分隔的元素总数为偶数,不需要硬编码长度,脚本会自动找中间点拆分。


方法2:awk命令(适合Linux/macOS终端快速处理)

如果习惯用命令行工具,直接执行下面的awk命令即可直接生成结果文件:

awk 'BEGIN{FS=OFS=","}
NR==1 {print $0,"E"; next}
{
    split($3, c_arr, "|")
    item_count = 0
    for (i in c_arr) if (c_arr[i] != "") item_count++
    mid = item_count / 2
    c1 = "|"; c2 = "|"; count = 0
    for (i=2; i<=length(c_arr); i++) {
        count++
        if (count <= mid) {
            c1 = c1 (count>1 ? "|" : "") c_arr[i]
        } else {
            c2 = c2 (count>mid+1 ? "|" : "") c_arr[i]
        }
    }
    $3 = c1
    print $0,"0"
    $3 = c2
    print $0,"1"
}' input.csv > output.csv

提示:如果你的C列拆分元素总数是奇数,可以调整取中间位置的逻辑(比如向上/向下取整)适配业务需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:27:24