删除'>>> '来自复制和粘贴的doctest

时间:2017-12-15 12:57:52

标签: python jupyter-notebook doctest

阅读文档我经常遇到我想要运行的doctests。我们假设您想在Jupyter笔记本中运行以下内容:

>>> a = 2
>>> b = 3
>>> c = a + b

最快的方法是什么?

1 个答案:

答案 0 :(得分:7)

只需将其复制并粘贴到新单元格中即可。 Jupyter在运行样本时会为您删除这样的标记:

enter image description here

如果必须剥离标记(可能出于美观原因),您可以使用一些Python代码来执行此操作:

def extract_console_code(sample):
    return ''.join([l[4:] for l in sample.splitlines(True) if l[:4] in ('>>> ', '... ')])

print(extract_console_code(r'''<paste code here>'''))

注意r原始字符串文字!这适用于大多数 Python代码。只有当您的代码示例包含更多'''三单引号时,您才必须单独处理它们(通过在代码周围使用双引号,或者通过将部分与不同的字符串文字样式连接在一起)。另请注意,我们会跳过任何不以>>>...开头的行;那些是输出行而不是代码。

你必须在Python脚本中运行它,因为Jupyter控制台仍然只是去除那些初始行,所以对于你的确切示例,根据你添加行的方式,它可能是 none 或只返回几行;任何以>>>...开头的行,即使是在字符串文字中,也会被Jupyter剥离!