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

如何使用Python将CSV文件单列按分号拆分为两列并保存

实现逻辑
  • 第一步:先读取CSV表头行,定位programme列对应的索引位置,同时给新表新增两个表头program 1、program 2,替换掉原来的programme表头。
  • 第二步:逐行读取CSV内容,取出programme列的原值,用split(';')方法按分号拆分,加maxsplit=1参数控制最多只拆1次,避免列内有多个分号导致拆分出错,拆分后可以用strip()去除值前后的多余空格。
  • 第三步:把拆分后的两个值替换原行中programme列的位置,拼接成新行后写入新CSV文件即可。
完整可运行代码
import csv

programme_col_idx = None
new_header = []

with open('IMI.csv', 'r', encoding='utf-8') as csv_file:
    csv_reader = csv.reader(csv_file)
    # 读取表头定位programme列位置
    header = next(csv_reader)
    for idx, col_name in enumerate(header):
        if col_name == 'programme':
            programme_col_idx = idx
            new_header.extend(['program 1', 'program 2'])
        else:
            new_header.append(col_name)
    
    if programme_col_idx is None:
        raise ValueError("未在CSV中找到programme列,请检查文件表头是否正确")

    with open('new_IMI.csv', 'w', encoding='utf-8', newline='') as new_file:
        # 若需要常规逗号分隔的CSV,可将delimiter参数改为','
        csv_writer = csv.writer(new_file, delimiter='\t')
        # 写入新表头
        csv_writer.writerow(new_header)
        # 逐行处理内容
        for line in csv_reader:
            programme_val = line[programme_col_idx]
            p1, p2 = programme_val.split(';', maxsplit=1)
            # 清理值前后的空格
            p1 = p1.strip()
            p2 = p2.strip()
            # 拼接生成新行
            new_line = line[:programme_col_idx] + [p1, p2] + line[programme_col_idx+1:]
            csv_writer.writerow(new_line)
注意事项
  • 如果你的CSV没有表头、第一行就是内容,可直接手动指定programme_col_idx为对应列的序号(列从左到右从0开始计数),删除表头处理的相关代码即可。
  • 写入时加newline=''是Python csv模块的规范写法,可以避免Windows系统下生成的CSV出现多余空行的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:24:07