读入一个Python程序,将其单行的注释(即 每一行“#”后面的内容)删除后程序中的注释后显示
时间: 2023-12-03 20:42:18 浏览: 154
很好的问题,以下是解决方案:
```python
with open("program.py", "r") as f:
for line in f:
line = line.split("#")[0].strip()
if line:
print(line)
```
这个程序会打开名为 "program.py" 的文件,逐行读取并删除单行注释,然后打印出没有注释的代码行。
相关问题
用python编写读入Python源程序文件practice.py,删除程序中的注释后显示。
可以使用Python自带的ast模块来实现读入Python源程序文件并删除注释的功能。以下是示例代码:
```python
import ast
def remove_comments(node):
"""
删除注释节点
"""
if isinstance(node, ast.AST):
# 删除注释节点
if isinstance(node, ast.Expr) and isinstance(node.value, ast.Constant) and isinstance(node.value.value, str):
if node.value.value.startswith("#"):
return None
# 递归处理子节点
for field, old_value in ast.iter_fields(node):
if isinstance(old_value, list):
new_values = []
for value in old_value:
if isinstance(value, ast.AST):
value = remove_comments(value)
if value is not None:
new_values.append(value)
node.__setattr__(field, new_values)
elif isinstance(old_value, ast.AST):
new_value = remove_comments(old_value)
if new_value is None:
delattr(node, field)
else:
node.__setattr__(field, new_value)
return node
if __name__ == '__main__':
# 读入Python源程序文件
with open("practice.py", "r") as f:
source_code = f.read()
# 解析源程序为AST(抽象语法树)
tree = ast.parse(source_code)
# 删除注释节点
remove_comments(tree)
# 生成新的Python源程序文件
new_source_code = ast.unparse(tree)
# 显示新的Python源程序文件
print(new_source_code)
```
需要注意的是,这段代码只会删除单行注释(以`#`开头的注释),而不会删除多行注释(以`'''`或`"""`包裹的注释)。如果需要删除多行注释,可以在`remove_comments`函数中添加相应的处理逻辑。
8.读入 python 源程序文件practice.py,删除程序中的注释后显示。
可以使用正则表达式来删除 Python 程序中的注释,然后将处理后的程序输出到控制台。
以下是一个示例代码:
```python
import re
with open('practice.py', 'r') as f:
program = f.read()
# 删除单行注释
program = re.sub(r'(^|\s+)#.*', '', program)
# 删除多行注释
program = re.sub(r'(?s)\'.*?\'|\".*?\"|#.*?(\n|\r\n)', '', program)
print(program)
```
这个代码可以同时删除单行注释和多行注释,包括用单引号或双引号括起来的字符串中的 '#' 符号。
阅读全文