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

使用nbconvert转换Notebook为Markdown时如何取消代码输出缩进?

nbconvert转换Markdown时代码输出自带前置4空格缩进的解决方案

这是nbconvert内置Markdown导出模板的默认逻辑:为了视觉上区分原代码块和对应运行输出,模板会自动给所有文本类运行输出加上4个空格的前置缩进,把内容归到带缩进的块结构里,无法满足无缩进的输出要求。

方法1:自定义轻量模板快速实现(推荐)

不需要修改全局配置,单次转换就能生效:

  • 在执行nbconvert命令的工作目录下,新建模板文件no_indent_output.tpl.j2,写入如下覆盖逻辑:
{%- extends 'markdown/index.j2' %}
{# 覆盖标准输出、错误输出的渲染规则,去掉自动添加的缩进包裹 #}
{%- block stream_stdout -%}
{{ output.text | trim }}
{%- endblock stream_stdout -%}
{%- block stream_stderr -%}
{{ output.text | trim }}
{%- endblock stream_stderr -%}
{# 覆盖代码执行结果输出的渲染规则,直接输出内容不缩进 #}
{%- block execute_result -%}
{{ output.data.get('text/markdown', output.data.get('text/plain', '')) | trim }}
{%- endblock execute_result -%}
{# 覆盖报错信息的渲染规则,去掉自动缩进 #}
{%- block error -%}
{{ output.traceback | join('\n') | trim }}
{%- endblock error -%}
  • 修改原本的转换命令,指定加载这个自定义模板运行:
    jupyter nbconvert --execute --to markdown --template no_indent_output.tpl.j2 --output output.md notebook.ipynb
    执行完成后生成的output.md中,所有代码运行输出都会完全去掉4个空格的前置缩进,保留输出内容本身的格式。

方法2:全局修改内置模板配置

如果不需要每次转换都额外指定模板参数,可以直接修改nbconvert的全局默认模板:

  • 执行命令jupyter --paths,找到输出结果中data目录对应的路径,进入路径下的nbconvert/templates/markdown文件夹
  • 打开文件夹内的核心模板文件index.j2,定位到所有为输出块添加4空格缩进的代码段,删除自动添加缩进的包裹逻辑,让输出内容直接按原文渲染
  • 保存文件后,执行你原来的常规转换命令,就能直接生成无缩进的输出结果。

注意:如果Notebook中包含图片、嵌入HTML等非文本类输出,需要在自定义模板中补充对应类型输出的渲染规则,避免导出时这类内容丢失。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 21:15:10