从复制和粘贴的 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 删除!
阅读文档我经常遇到我想 运行 的文档测试。假设您想 运行 在 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 删除!