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

如何处理含列表字典格式字符串的CSV文件?

解决CSV嵌套结构扁平化的问题

问题分析

你拿到的CSV里product列是嵌套字典/列表的字符串,直接截取字符串片段无法获取深层字段,必须先把这个字符串转换成Python可操作的数据结构,再逐层提取目标内容。

解决方案代码

import csv
import json

# 定义目标表头
target_headers = [
    'id', 'name', 'product.id', 'product.status',
    'productRatePlan.id', 'productRatePlan.name',
    'productRatePlan.currency', 'productRatePlan.price'
]

with open('original.csv', 'r', encoding='utf-8') as infile, open('flattened.csv', 'w', newline='', encoding='utf-8') as outfile:
    reader = csv.reader(infile)
    writer = csv.writer(outfile)
    
    # 写入目标表头
    writer.writerow(target_headers)
    
    # 跳过原始文件的表头行
    next(reader)
    
    for row in reader:
        original_id, original_name, product_str = row
        
        # 清理product字符串:替换单引号为双引号,去掉首尾错误的列表包裹
        cleaned_product = product_str.replace("'", '"')[1:-1]
        # 转换为Python字典
        product_data = json.loads(cleaned_product)
        
        # 逐层提取嵌套字段
        product_id = product_data['id']
        product_status = product_data['status']
        
        # 处理productRatePlan列表(取第一个元素)
        prp = product_data['productRatePlan'][0]
        prp_id = prp['id']
        prp_name = prp['name']
        
        # 处理pricing列表(取第一个元素)
        pricing = prp['pricing'][0]
        currency = pricing['currency']
        price = pricing['price']
        
        # 组装输出行并写入
        output_row = [
            original_id, original_name,
            product_id, product_status,
            prp_id, prp_name,
            currency, price
        ]
        writer.writerow(output_row)

关键步骤说明

  1. 字符串转数据结构:原product列用单引号,不符合JSON规范,先替换为双引号;原数据错误地用列表包裹字典,所以去掉首尾的[],再用json.loads()转换成Python字典。
  2. 逐层提取字段:从字典里直接取顶层字段,嵌套的列表(比如productRatePlan、pricing)取第一个元素后再提取内部字段。
  3. 写入新CSV:按照目标表头组装每行数据,写入新文件。

需要学习的知识点

  • Python csv模块:掌握读写CSV文件的基本方法,处理表头、行数据的逻辑。
  • Python json模块:理解JSON与Python字典/列表的对应关系,学会用loads()解析JSON字符串。
  • 嵌套数据结构遍历:练习从多层嵌套的字典、列表中提取目标值,熟悉索引、键值访问的操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:45:35