You need to enable JavaScript to run this app. 如何将Python代码块按顶级语句拆分为字符串列表?
优惠活动
大模型
产品
解决方案
定价
更多

如何将Python代码块按顶级语句拆分为字符串列表?

解决方案

你可以直接用Python内置的ast(抽象语法树)模块实现需求,不需要安装第三方依赖。核心是用ast.parse解析代码结构,再通过ast.get_source_segment提取每个顶级语句对应的原始代码片段,刚好匹配你要的拆分效果。

实现代码

import ast

def split_top_level_statements(code: str) -> list[str]:
    # 解析代码为抽象语法树,语法错误会直接抛出SyntaxError,可自行捕获处理
    tree = ast.parse(code)
    result = []
    for node in tree.body:
        # 提取当前节点对应的原始代码段
        segment = ast.get_source_segment(code, node)
        if segment:
            result.append(segment)
    return result

测试效果

输入你给出的示例代码:

while False:
    pass
def function():
    pass
print("Code sample")
for _ in range(1,100):
    for __ in range(_):
        pass

调用函数后的输出和你期望的结果一致:

[
    "while False:\n    pass",
    "def function():\n    pass",
    'print("Code sample")',
    "for _ in range(1,100):\n    for __ in range(_):\n        pass"
]

补充说明

  • 该方法仅适用于Python3.8及以上版本,ast.get_source_segment是3.8版本新增的内置方法
  • 如果输入代码存在语法错误,ast.parse会直接抛出SyntaxError,你做错误检查工具时可以直接捕获该异常获取语法类错误信息
  • 如果需要调整代码段的换行、缩进格式,对提取到的segment做字符串处理即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 19:30:00