5

ag用来搜索我的笔记。我的笔记记录在 Jupyter 笔记本中包含的 Markdown 文件和 Markdown 单元格中。

我可以使用ag --markdown .... 如果可以使用 Jupyter 笔记本文件完成类似的操作,那将非常方便。但这需要ag了解这些笔记本的格式。

我的问题:有没有办法在 Jupyter 笔记本文件中搜索给定字符串的 Markdown 单元格?解决方案中使用的任何模式匹配器对我来说都是可以接受的(ag, grep, ack, ...)。

ps笔记本由 JSON 组成。这是一个示例:

$ head notebook.ipynb
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "THIS IS A MARKDOWN STRING"
   ]
  },
  {
4

2 回答 2

2

我不知道是否ag可以与过滤器接口,但要从笔记本文件中获取 Markdown,以下 Python 代码就足够了

import nbformat
from sys import argv
nb = nbformat.read(argv[1], nbformat.NO_CONVERT)
for cell in nb.cells:
    if cell.cell_type == 'markdown' : print(cell.source)
于 2018-06-05T14:30:52.227 回答
2

我希望jq用来过滤掉python笔记本的所有降价单元。例如,如果您只想吐出所有的降价源,您可以使用以下内容:

$< notebook.ipynb | jq '.cells[]|select(.cell_type == "markdown")|.source[]'

jq 速度很快,并且在将 ipython 笔记本保存到 git 时用于更复杂的解决方案,例如:Using IPython notebooks under version control

于 2018-06-06T05:35:00.323 回答