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

如何在Python中处理含分隔符的CSV文本列,实现正确列拆分

处理含内部分隔符的CSV拆分问题

问题背景

现有一份用_作为分隔符的CSV文件,其中TEXT列的内容包含分隔符_,且每行该列内的分隔符数量不固定,直接按_拆分会导致列结构混乱。原始数据示例:

ID_GROUP_TEXT_DATE_PART
101_group_1_此处有一些文本_23.06.2023_1
102_group_2_此处有一些_文本_23.06.2023_1
103_group_3_一些_文本_内容在此_23.06.2023_1
104_group_4_此处有一些文本_23.06.2023_1

需要将其拆分为固定列:ID、GROUP、TEXT、DATE、PART,预期结果如下:

IDGROUPTEXTDATEPART
101group_1此处有一些文本23.06.20231
102group_2此处有一些_文本23.06.20231
103group_3一些_文本_内容在此23.06.20231
104group_4此处有一些文本23.06.20231

解决方案

由于前两列(ID、GROUP)和最后两列(DATE、PART)的格式是固定的,可以通过拆分后截取固定位置的元素,合并中间部分的方式处理:

方法1:Python实现

# 读取并处理CSV内容
csv_content = """ID_GROUP_TEXT_DATE_PART
101_group_1_此处有一些文本_23.06.2023_1
102_group_2_此处有一些_文本_23.06.2023_1
103_group_3_一些_文本_内容在此_23.06.2023_1
104_group_4_此处有一些文本_23.06.2023_1"""

lines = csv_content.splitlines()
# 处理数据行
processed_rows = []
for line in lines[1:]:
    parts = line.split('_')
    # 提取固定部分
    id_val = parts[0]
    group_val = f"{parts[1]}_{parts[2]}"
    date_val = parts[-2]
    part_val = parts[-1]
    # 合并中间部分为TEXT
    text_val = '_'.join(parts[3:-2])
    processed_rows.append([id_val, group_val, text_val, date_val, part_val])

# 输出结构化结果
print("\t".join(["ID", "GROUP", "TEXT", "DATE", "PART"]))
for row in processed_rows:
    print("\t".join(row))

方法2:awk命令行实现

如果习惯用命令行工具,可以用awk处理:

BEGIN {FS="_"; OFS="\t"}
NR==1 {print "ID", "GROUP", "TEXT", "DATE", "PART"; next}
{
    id = $1
    group = $2 "_" $3
    date = $(NF-1)
    part = $NF
    text = ""
    for(i=4; i<=NF-2; i++){
        text = text $i (i==NF-2 ? "" : "_")
    }
    print id, group, text, date, part
}

执行方式:将上述代码保存为process_csv.awk,然后运行

awk -f process_csv.awk your_file.csv

核心思路

  1. 识别固定格式的字段:ID是拆分后的第一个元素,GROUP是拆分后的第2、3个元素拼接(格式为group_数字);DATE是倒数第二个元素,PART是最后一个元素。
  2. 中间所有剩余的元素用_拼接,得到完整的TEXT列内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 19:43:18