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

如何批量将.ipynb中Scheme类型可执行代码单元格转为Markdown代码块

批量转换Jupyter Notebook中Scheme代码单元格为Markdown代码块

不用写复杂正则,直接操作.ipynb的JSON结构就能搞定,步骤如下:

原理

Jupyter Notebook本质是JSON格式文件,所有单元格都存储在cells数组中。代码单元格的cell_type字段值为code,我们只需识别其中的Scheme代码单元格,将其类型改为markdown,并把代码内容包裹成Markdown的Scheme代码块格式即可。

具体实现(Python脚本)

import json

# 替换成你的源Notebook路径和输出路径
src_notebook = "your_notebook.ipynb"
dst_notebook = "converted_notebook.ipynb"

# 读取Notebook文件
with open(src_notebook, "r", encoding="utf-8") as f:
    nb_data = json.load(f)

# 遍历所有单元格进行转换
for cell in nb_data["cells"]:
    if cell["cell_type"] != "code":
        continue
    
    # 判断是否为Scheme代码单元格,可根据实际情况调整判断逻辑
    is_scheme_cell = False
    # 方式1:检查单元格元数据中的语言标记(如果有)
    if "language" in cell.get("metadata", {}) and cell["metadata"]["language"].lower() == "scheme":
        is_scheme_cell = True
    # 方式2:根据代码内容特征判断(比如包含(define ...)这类Scheme语法)
    elif any(line.strip().startswith("(") and "define" in line.strip() for line in cell["source"]):
        is_scheme_cell = True
    
    if is_scheme_cell:
        # 转换为Markdown代码块
        cell["source"] = ["```scheme\n"] + cell["source"] + ["\n```"]
        cell["cell_type"] = "markdown"
        # 移除代码单元格特有的属性
        cell.pop("execution_count", None)
        cell.pop("outputs", None)

# 保存转换后的Notebook
with open(dst_notebook, "w", encoding="utf-8") as f:
    json.dump(nb_data, f, indent=2)

注意事项

  • 备份原文件:转换前务必复制一份原.ipynb文件,防止操作失误导致数据丢失。
  • 调整判断逻辑:如果你的Scheme代码单元格有特殊标识(比如元数据里的其他字段),可以修改脚本中的判断条件,确保准确识别目标单元格。
  • 验证转换结果:运行脚本后,打开生成的converted_notebook.ipynb,检查所有Scheme代码是否都正确转为Markdown代码块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:25:21