从复制和粘贴的 doctest 中删除“>>>”

Remove '>>> ' from copied and pasted doctest

阅读文档我经常遇到我想 运行 的文档测试。假设您想 运行 在 Jupyter notebook 中执行以下操作:

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

最快的方法是什么?

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

如果您必须去除标记(可能是出于美学原因),您可以使用一些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 原始字符串文字!这应该适用于 most Python 代码。仅当您的代码示例包含更多 ''' 三重单引号时,您才需要单独处理它们(通过在代码周围使用双引号,或通过将部分与不同的字符串文字样式连接在一起)。另外,请注意我们会跳过任何不以 >>>... 开头的行;这些是输出行而不是代码。

您必须 运行 在 Python 脚本中执行此操作,因为 Jupyter 控制台仍然只是删除那些初始行,因此对于您的确切示例,取决于您添加的方式行,可能是 none 或仅返回几行;任何以 >>>... 开头的行,即使是字符串文字,也会被 Jupyter 删除!