使用pandoc将ipython笔记本文件(基于JSON)转换为其他格式

时间:2012-01-07 13:28:17

标签: json ipython pandoc

当尝试使用pandoc从iPython notebook(0.12)转换基于JSON的文件(.ipynb)时,我收到一条错误,指出JSON的“bad decodeArgs”。我怀疑这可能是由于我正在使用的Ubuntu提供的pandoc版本(1.8.1.1)。似乎获得最新的pandoc版本需要设置Haskell平台,由于依赖性挑战(并且真的不想),我没有成功做到这一点。如果这不是我的问题,我不想再花时间尝试安装Haskell。

有没有办法在没有重建的情况下获取Ubuntu的最新pandoc二进制文件?

鉴于iPython笔记本是新的(非常酷!!),听听有关将JSON翻译成其他格式的相关经验会很高兴。除了pandoc之外,也许有另外一种方法可以实现这一目标。

2 个答案:

答案 0 :(得分:2)

关于你“与Pandoc保持同步”,我担心你确实需要安装Haskell。通过Haskell Platform(“HP”)软件包执行此操作的最佳方法,然后就像使用Ruby一样,使用环境的软件包管理器来实现依赖项比使用OS更加一致。即使在Windoze中,我也没有遇到麻烦。 。

我确信Haskell邮件列表中的问题会为Debian / Ubuntu等主流平台提供快速帮助,但您可能需要手动安装可通过操作系统软件包管理器获得的更新版本的HP。 / p>

启动并运行HP之后,开发Pandoc很容易编译,git会让你及时了解最新的具体说明,目前维护: https://github.com/jgm/pandoc/wiki/Installing-the-development-version-of-pandoc-1.9

注意v1.9现在已经正式发布了,如果你真的不想解决与开发周期保持同步的问题,但当然你再也不会在你的OS包管理器中得到它在那之后相当一段时间(无论如何我都假设)。

========================== 关于您将JSON视为文档语法的尝试:

此时Pandoc的最佳语法输入是它的原生markdown +扩展和reST(特别是对于Python人/环境),基本上保持功能相同,尽管前者可能有一些未表示的功能在后者中,因为John可以随时添加扩展名。 AFAIK Pandoc尚未开始支持Sphinx扩展(但是?)

Pandoc内部使用的JSON格式没有记录(但是?),但它是本机Haskell数据类型。正如Thomas K所指出的那样,这两个工具如何表示数据之间可能存在一些相似之处,但可能还不足以将其视为“另一种标记格式”。

但是,如果你正在研究这个问题,那么就可以很容易地看到Pandoc以JSON输入的方式寻找什么。

pandoc -t json

将此与

进行比较

pandoc -t native

并且很容易看到Text.Pandoc.Definition和Text.JSON.Generic创建的规范

使用Pandoc的内部数据表示作为输入显然比标记的文本流更稳定,而其他人表达了对此文档的期望,这将是对社区的巨大贡献。

请告知Pandoc mail list此领域所做的任何工作。那里的工作人员非常敏感,包括直接从John M(首席开发人员)那里获得快速反馈。

答案 1 :(得分:0)

我怀疑pandoc或其他任何工具都知道如何处理ipynb文件(在撰写本文时,IPython笔记本在不到一个月前发布)。 JSON只是一种通用的数据结构,如XML,而不是文档格式。

我们(IPython)致力于将笔记本电脑导出到其他格式的工具,但他们尚未做好正确发布的准备。如果您想帮助开发它,请参阅this mailing list thread。希望它将成为下一个IPython版本的一部分。