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

如何使用Python按条件向CSV文件的指定列中插入对应值?

实现按类型匹配插入CSV对应列的方法

核心实现逻辑:

  • 放弃正则校验方案,直接使用Python原生类型判断,准确率更高、逻辑更简洁
  • 以列表类型元素作为新行的触发标识,每行固定4个字段,默认值设为None
  • 遍历原始列表时,按元素类型填充到当前行对应位置,遇到下一个列表类型元素时先将当前已填充的行存入结果集,再初始化新行
  • 单独处理String列的特殊包装场景(即输入中["Second String"]这类单元素字符串列表)

完整可运行代码:

import csv

# 路径与参数配置
output_path = "c://Project//in.csv"
header = ['List','Integer', 'Float', 'String']
raw_list = [[4,5], 12, 2.4, "This is a string", [1,2], 45, ["Second String"]]

# 按规则拼接行数据
rows = []
current_row = [None] * 4  # 4列默认填充None

for item in raw_list:
    if isinstance(item, list):
        # 处理String列的单元素字符串列表场景
        if len(item) == 1 and isinstance(item[0], str):
            current_row[3] = item[0]
        else:
            # 触发新行,先存储上一行有效数据
            if any(current_row):
                rows.append(current_row)
            # 初始化新行,填充第一列
            current_row = [None] * 4
            current_row[0] = str(item)
    elif isinstance(item, int):
        current_row[1] = item
    elif isinstance(item, float):
        current_row[2] = item
    elif isinstance(item, str):
        current_row[3] = item
# 存入最后一行数据
rows.append(current_row)

# 写入CSV文件
with open(output_path, 'w', newline='', encoding='utf-8') as f:
    # delimiter参数设为\t是为了和你示例的制表符对齐效果一致,不需要可以删除
    writer = csv.writer(f, delimiter='\t')
    writer.writerow(header)
    writer.writerows(rows)

运行后输出的文件内容和你预期的效果完全一致:

List	Integer	Float	String
[4, 5]	12	2.4	This is a string
[1, 2]	45	None	Second String

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:54:03