如何删除Python文件中含缩进的注释行与print语句行?
解决方法
以下代码可以处理带缩进的注释行和print语句行,核心是用正则匹配行开头的任意空白字符:
import re def filter_lines(input_file, output_file): # 定义匹配规则:注释行(任意缩进后接#)、print行(任意缩进后接print关键字) comment_pattern = re.compile(r'^\s*#') print_pattern = re.compile(r'^\s*print\b') with open(input_file, 'r', encoding='utf-8') as f_in, open(output_file, 'w', encoding='utf-8') as f_out: for line in f_in: # 跳过匹配到的注释行和print行 if comment_pattern.match(line) or print_pattern.match(line): continue # 保留其他行 f_out.write(line) # 使用示例 filter_lines('input.py', 'output.py')
关键点说明
^\s*:匹配行开头的任意数量空白字符(包括空格、制表符,不管缩进层级)#:结合前面的空白匹配规则,覆盖所有带缩进的整行注释print\b:\b是单词边界,确保匹配的是print关键字,避免误删包含print字符串的变量或其他代码(比如myprint_var = 1不会被误过滤)re.match():仅匹配行开头的内容,不会删除行中间出现#或print的有效代码行(比如x = 1 # 行尾注释会被保留)
测试示例
假设输入文件内容:
def func(): # 这是带缩进的注释 print("hello world") x = 5 print(x) y = 10 # 行尾注释,不会被删除
处理后输出文件内容:
def func(): x = 5 y = 10 # 行尾注释,不会被删除
内容的提问来源于stack exchange,提问作者user19912573
相关产品推荐
相关产品推荐

