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

使用Python代码块将Google Sheets原始行转换为嵌套列表

解决方案:将类列表字符串转换为嵌套列表(含CSV单元格拆分)

步骤说明

  1. 解析外层类列表字符串:用ast.literal_eval()替代正则,安全地将类似列表的字符串转为真实Python列表,避免正则匹配引号、逗号等边界的麻烦。
  2. 拆分CSV格式单元格:对列表中的每个元素,判断是否为CSV格式(或直接尝试解析),用csv模块处理复杂CSV(含引号包裹的字段),简单场景可直接用split(',')。

代码实现

import ast
import csv
from io import StringIO

def convert_to_nested_list(row_str):
    # 第一步:将类列表字符串转为普通列表
    raw_list = ast.literal_eval(row_str)
    
    nested_list = []
    for item in raw_list:
        # 尝试解析为CSV(处理带引号的复杂场景)
        try:
            # 用StringIO模拟文件对象,传入csv.reader
            csv_reader = csv.reader(StringIO(item))
            # 取第一行(单个单元格的CSV就是一行)
            csv_items = next(csv_reader)
            # 拆分后元素数量>1才视为CSV,避免误拆含逗号的普通文本
            if len(csv_items) > 1:
                nested_list.append(csv_items)
            else:
                nested_list.append(item)
        except:
            # 解析失败则保留原元素
            nested_list.append(item)
    
    return nested_list

# 测试示例
raw_row_str = "['John Doe', 'john@example.com', 'apple,banana,\"red orange\"', 'USA']"
result = convert_to_nested_list(raw_row_str)
print(result)
# 输出: ['John Doe', 'john@example.com', ['apple', 'banana', 'red orange'], 'USA']

关键细节

  • ast.literal_eval()的优势:不会执行任意代码,仅解析Python字面量(列表、字符串等),比eval()更安全,完美适配Zapier中传入的类列表字符串。
  • csv模块的必要性:如果CSV单元格包含带逗号的引号字段(如"red orange,grape"),直接split(',')会拆错,csv.reader能正确识别引号包裹的字段。
  • 异常处理:避免因普通文本含逗号(非CSV)导致解析失败,确保所有元素都能被正确保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:02:07