是否有工具从python源提取所有注释,保留源代码行/ col信息?

时间:2015-08-20 00:41:53

标签: python parsing

是否有任何python库或工具允许我从python源代码块中提取所有注释,最好保留有关原始行和列的信息?例如

PYCODE = """
# Comment 1
x = "#Notacomment"
##### Comment 2 #####
""".strip()
print(get_comments(PYCODE))

[("# Comment 1", 0, 0), ("##### Comment 2 #####", 2, 0)]

1 个答案:

答案 0 :(得分:7)

您可以使用tokenize module扫描评论。这是一个基本上输出你想要的片段:

import tokenize, io

code_string = """
# Comment 1
x = "#Notacomment"
##### Comment 2 #####
"""

buf = io.StringIO(code_string)

for line in tokenize.generate_tokens(buf.readline):
    if line.type == tokenize.COMMENT:
        print(line)

输出:

TokenInfo(type=54 (COMMENT), string='# Comment 1', start=(2, 0), end=(2, 11), line='# Comment 1\n')
TokenInfo(type=54 (COMMENT), string='##### Comment 2 #####', start=(4, 0), end=(4, 21), line='##### Comment 2 #####\n')

请参阅文档以了解如何使用TokenInfo实例。