如何用Python拆分CSV文件中带分隔符的List字段并展开数据?
用Python拆分CSV中多值字段为独立行
方法一:用Python原生csv模块(无需额外安装库)
这种方法适合不想依赖第三方库的场景,逻辑直观,容易调试:
- 指定输入输出CSV文件路径
- 读取输入文件的表头和每一行数据
- 对目标多值字段(比如
List)用split("|")拆分出单个值 - 将每个拆分后的值与原行其他字段组合成新行,写入输出文件
示例代码:
import csv # 替换成你的实际文件路径 input_path = "input.csv" output_path = "output.csv" with open(input_path, "r", newline="", encoding="utf-8") as in_file, \ open(output_path, "w", newline="", encoding="utf-8") as out_file: # 按字典格式读取每行数据,保留表头 csv_reader = csv.DictReader(in_file) csv_writer = csv.DictWriter(out_file, fieldnames=csv_reader.fieldnames) # 先写入表头 csv_writer.writeheader() for row in csv_reader: # 拆分多值字段,替换成你的实际字段名 split_values = row["List"].split("|") # 遍历每个拆分后的值,生成新行 for val in split_values: # 清除值前后的空格(按需选择) cleaned_val = val.strip() # 复制原行数据,替换多值字段为单个值 new_row = row.copy() new_row["List"] = cleaned_val csv_writer.writerow(new_row)
方法二:用pandas(适合大数据量,代码更简洁)
如果日常经常处理表格数据,pandas的explode方法能快速完成拆分,效率更高:
先安装pandas(如果没装的话):pip install pandas
示例代码:
import pandas as pd # 读取CSV文件 df = pd.read_csv("input.csv") # 拆分多值字段并展开为独立行 df["List"] = df["List"].str.split("|") df = df.explode("List").reset_index(drop=True) # 清除值前后的空格(按需选择) df["List"] = df["List"].str.strip() # 保存结果到新CSV df.to_csv("output.csv", index=False, encoding="utf-8")
注意事项
- 把代码中的
"List"替换成你CSV中实际的多值字段名 - 如果字段可能存在空值,可添加判断(比如
if row["List"]:)避免拆分报错 - 若中文出现乱码,可调整编码参数为
gbk或gb2312
内容的提问来源于stack exchange,提问作者Yogs
相关产品推荐
相关产品推荐

