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

如何拆分嵌套列表中指定元素并生成新列表写入CSV

解决嵌套列表指定字段拆分并写入CSV的问题

需求梳理

  • 处理经JSON解析得到的嵌套列表,每个子列表的**第5个元素(索引4)**需按-拆分
  • 仅操作该字段,其他含-的元素不处理;若该字段为空/None,则保留空值
  • 拆分后用两个新元素替换原元素,生成新结构的列表后写入CSV并添加表头
  • 列表规模为数百到数千条,优先使用Python 3.10标准库,也可使用Pandas 2.0.2

原代码问题分析

你提供的代码存在两个核心问题:

  1. 索引越界:未处理子列表长度不足5的情况,直接访问i[4]会触发IndexError
  2. 逻辑错误:直接调用result_list.append()是把拆分后的列表作为新的子列表追加,而非替换原列表中的对应元素;同时遍历过程中修改原列表会导致循环异常

方案1:Python标准库实现(csv模块)

通过创建新列表存储处理后的结果,避免遍历原列表时修改结构引发的问题,同时增加长度校验防止索引越界:

import csv

# 假设你的原始嵌套列表是result_list,表头自定义
header = ["字段1", "字段2", "字段3", "字段4", "拆分后字段A", "拆分后字段B"]
processed_list = []

for sub_list in result_list:
    # 先复制原列表前4个元素(索引0-3)
    new_sub = sub_list[:4]
    # 处理索引4的元素
    try:
        target_val = sub_list[4]
        if target_val is None or not str(target_val).strip():
            # 空值/None,添加两个空元素
            new_sub.extend(["", ""])
        else:
            # 按'-'拆分,最多拆1次(避免多'-'导致拆分出多个元素)
            split_parts = str(target_val).split('-', 1)
            # 不足2个元素的话补空值
            while len(split_parts) < 2:
                split_parts.append("")
            new_sub.extend(split_parts)
    except IndexError:
        # 子列表长度不足5,直接补两个空元素
        new_sub.extend(["", ""])
    processed_list.append(new_sub)

# 写入CSV
with open("output.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.writer(f)
    writer.writerow(header)
    writer.writerows(processed_list)

方案2:Pandas实现(更简洁)

利用Pandas的字符串拆分功能,一步完成字段拆分和列合并:

import pandas as pd

# 假设原始嵌套列表转换为DataFrame,表头自定义
header = ["字段1", "字段2", "字段3", "字段4", "待拆分字段"]
df = pd.DataFrame(result_list, columns=header)

# 拆分索引4的列,expand=True拆分为两列,缺失值填充空字符串
split_df = df["待拆分字段"].str.split('-', n=1, expand=True).fillna("")
split_df.columns = ["拆分后字段A", "拆分后字段B"]

# 合并原DataFrame的前4列和拆分后的列
final_df = pd.concat([df.iloc[:, :4], split_df], axis=1)

# 写入CSV
final_df.to_csv("output_pandas.csv", index=False, encoding="utf-8")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 00:03:14