是否有任何python库或工具允许我从python源代码块中提取所有注释,最好保留有关原始行和列的信息?例如
PYCODE = """
# Comment 1
x = "#Notacomment"
##### Comment 2 #####
""".strip()
print(get_comments(PYCODE))
[("# Comment 1", 0, 0), ("##### Comment 2 #####", 2, 0)]
答案 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
实例。