gpt4 book ai didi

python - 提取所有文档字符串的行号?

转载 作者:太空宇宙 更新时间:2023-11-03 15:23:17 25 4
gpt4 key购买 nike

我正在尝试提取 Python 模块中所有文档字符串的开始和结束行号。有没有不使用正则表达式的明智方法?

最佳答案

最好的方法是使用 ast模块。特别是,ast.get_docstring几乎做你想做的;它返回文档字符串的内容而不是节点,但您可以使用相同的算法来查找文档字符串节点及其位置:

root = ast.parse('''
def foo():
"""the foo function"""
pass
''')
for node in ast.walk(root):
if isinstance(node, (ast.FunctionDef, ast.ClassDef, ast.Module)):
if (node.body and isinstance(node.body[0], ast.Expr) and
isinstance(node.body[0].value, ast.Str)):
print node.lineno, node.body[0].value.lineno, node.body[0].value.s

虽然未记录,lineno 属性给出节点的last 行,因此父节点的lineno 将是第一行文档字符串或它之前的行。似乎没有一种简单的方法可以区分从 classdef 关键字的同一行开始的文档字符串和在下一行开始的文档字符串之间的区别,尤其是当您考虑换行 (\) 字符。

关于python - 提取所有文档字符串的行号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11608747/

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