如何使用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
相关产品推荐
相关产品推荐

