【问题标题】:how to search over jupyter notebook python files?如何搜索 jupyter notebook python 文件?
【发布时间】:2020-03-28 20:00:33
【问题描述】:

我有很多 jupyter python 文件 (ipnyb),我怎样才能轻松地在它们上搜索 python 源代码,例如从命令行或 jupyter-notebook 客户端本身?我正在寻找专门用于 jupter 笔记本的东西,而不是普通的 find/grep,因为嵌入式数据“”data”:{ “图像/png”}

【问题讨论】:

    标签: python-3.x jupyter-notebook


    【解决方案1】:

    要在笔记本中搜索,请在命令模式下使用查找+替换快捷方式 F。例如,在 Kaggle 上,Esc 用于命令模式,然后F 用于触发查找。

    或者在 Mac 上使用 Cmd+Shift+P 打开命令面板,在 Linux/Win 上使用 Ctrl+Shift+P。然后在里面输入“find”。

    至于在 Jupyter 中一次搜索多个笔记本,我没有经验。我建议研究 JupyterLabs 及其扩展,因为它似乎更适合多个笔记本。

    在 CLI 中,普通的 grep 可以工作

    grep wordtosearch *.ipynb
    

    递归

    grep -r --include \*.ipynb wordtosearch mytopdirectory
    

    【讨论】:

    • 是的,没错,但笔记本文件通常包含嵌入的附加数据,例如“数据”部分中的图像:{“image/png”} ...
    【解决方案2】:

    此命令允许您执行递归搜索(通过当前目录中的所有目录)

    有关此命令的说明,请查看此链接 => explainshell

    find . -name '*ipynb' | xargs grep YOUR_SEARCH
    

    【讨论】:

    • 是的,没错,但笔记本文件通常包含嵌入的附加数据,例如“数据”部分中的图像:{“image/png”} ..
    • 您的需求是什么?搜索这些附加数据?
    • 如果您需要查找特殊字符串,为什么不搜索'"mystring"' 而不是'mystring',我的意思是添加引号,这样您就不会在嵌入数据中获得随机关键字
    • 我认为有一个 jupyert 专用工具可以做到这一点。目前我正在使用 jupyter-nbconvert 将 ipynb 转换为 python 文件,然后搜索它们。 ipynb 的元数据是个问题。
    【解决方案3】:

    我也想这样做!我找到了一个很好的解决方案,你可以在笔记本中完成。 google groups discussion is here,但万一链接中断,这里是那里提供的代码:

    
    pattern = '../**/*.ipynb'
    query = 'text you want to find'
    
    for filepath in glob.iglob(pattern, recursive=True):
        with open(filepath) as file:
            s = file.read()
            if (s.find(query) > -1):
                print(filepath)
    

    这将打印所有包含搜索字符串的文件。一个很好的增强是还打印字符串出现的上下文。

    【讨论】:

    • 嗨,前段时间我自己找到了一个解决方案。这就是我要找的东西:github.com/conery/nbscan 但版主删除了我的答案。 :-)
    猜你喜欢
    • 2016-10-04
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 2021-10-29
    • 2021-10-27
    • 1970-01-01
    • 2020-01-30
    • 2019-04-21
    相关资源
    最近更新 更多