读入Python源程序文件practice.py,删除程序中的注释后显示
时间: 2024-12-20 12:28:36 浏览: 5
在Python中,你可以使用内置模块`ast`(Abstract Syntax Trees,抽象语法树)来解析源代码,并利用`tokenize`模块处理文本,去除注释。这里是一个简单的示例:
```python
import ast
import tokenize
from io import StringIO
# 假设你有一个名为practice.py的文件内容
with open('practice.py', 'r') as file:
source_code = file.read()
# 使用tokenize模块去除注释
def remove_comments(code):
lines = code.splitlines()
tokens = list(tokenize.generate_tokens(StringIO(code).readline))
clean_lines = []
in_comment = False
for ttype, token, _, _, line_no in tokens:
if ttype == tokenize.COMMENT:
continue
elif ttype == tokenize.STRING and in_comment:
pass # ignore string literals inside comments
else:
in_comment = not in_comment
clean_lines.append(line_no + 1) # Python uses 1-based indexing
# Reconstruct the code without comments
return '\n'.join(str(line) for line in clean_lines)
no_comments_source = remove_comments(source_code)
print(no_comments_source)
```
这个代码会读取`practice.py`并打印出移除注释后的行号。注意这只是一个基础版本,对于复杂的文档字符串或者字符串形式的注释可能会有误判。
阅读全文