gpt4 book ai didi

python - IPython 笔记本从原始文本单元格读取字符串

转载 作者:太空狗 更新时间:2023-10-30 02:30:31 24 4
gpt4 key购买 nike

我的 IPython 笔记本项目中有一个原始文本单元格。

有没有办法通过内置函数或类似的东西将文本作为字符串获取?

最佳答案

我的(可能不令人满意的)答案分为两部分。这是基于对 iPython 结构的个人调查,我完全有可能错过了更直接回答问题的内容。

当前 session

代码单元格的原始文本在当前 session 期间输入可在笔记本中使用列表In获得。

因此可以通过单元格内的以下表达式返回当前单元格的原始文本:

In[len(In)-1]

例如,评估包含此代码的单元格:

print "hello world"
three = 1+2
In[len(In)-1]

产生相应的 Out[] 值:

u'print "hello world"\nthree = 1+2\nIn[len(In)-1]'

因此,在事件笔记本 session 中,您可以通过 In[n] 访问单元格的原始文本,其中 n 是所需单元格的显示索引。

但是,如果单元格是在之前的笔记本 session 期间输入的,该 session 随后被关闭并重新打开,则不再有效。此外,In 数组中似乎只包含代码单元。

此外,这不适用于非代码单元格,因此不适用于原始文本单元格。

保存的笔记本 session 中的单元格

在我的研究中,我发现从以前的 session 中获取原始文本的唯一方法是阅读原始笔记本文件。有一个文档页面 Importing IPython Notebooks as Modules描述如何做到这一点。关键代码在In[4]中:

    # load the notebook object
with io.open(path, 'r', encoding='utf-8') as f:
nb = current.read(f, 'json')

其中 current 是在 Module: nbformat.current 中描述的 API 的一个实例.

返回的笔记本对象作为嵌套字典和列表结构访问,例如:

    for cell in nb.worksheets[0].cells:
...

如此枚举的 cell 对象有两个关键字段用于此问题的目的:

  1. cell.cell_type 是单元格的类型(“code”、“markdown”、“raw”等)。

  2. cell.input 是作为字符串列表的单元格的原始文本内容,每行文本都有一个条目。

通过查看构成保存的 iPython 笔记本的 JSON 数据,可以看出其中的大部分内容。

除了笔记本中的“提示编号”字段(每当重新评估该字段时似乎都会发生变化)之外,我找不到创建对笔记本单元格的稳定引用的方法。

结论

我找不到原始问题的简单答案。我发现的内容已在上面介绍。在不知道最初问题背后的动机的情况下,我不知道这是否足够。

我寻找但无法确定的是一种引用当前笔记本的方法,可以在笔记本本身内部使用(例如,通过 get_ipython() 之类的函数)。这并不意味着它不存在。

我的回复中缺少的另一个部分是引用特定单元格的任何一种稳定方式。 (例如,查看笔记本文件格式,原始文本单元格仅由单元格类型(“原始”)和原始文本本身组成,尽管单元格元数据似乎也可能包括在内。)这表明直接引用a的唯一方法单元格是通过它在笔记本中的位置来确定的,但是当笔记本被编辑时,这个主题也会发生变化。

(作为牛津参与 http://aaronswartzhackathon.org 的一部分进行研究和回答)

关于python - IPython 笔记本从原始文本单元格读取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26440433/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com