读取文件时是否可以使用正则表达式忽略文本块

问题描述

不确定我是从错误的角度看的,但是我有点初学者,而且有点不了解我。我试图在读取文件时忽略多行注释,因此我可以计算.sas文件(仅是文本文件)中的代码行数。我可以让我的代码找到像这样分成两行的注释

/* comment
comment*/

但是不是这样

/* comment
comment
comment */

我的代码

for file_name in find_files(d):
    with open(file_name,'r') as f:
        def remove_comments(line):
            is_in_comment = False
            line = line.strip()
            if line.startswith('/*'):
                is_in_comment = True
                return 0
            elif line.endswith('*/'):
                is_in_comment = False
                return 0

            return 0 if is_in_comment else 1

        count = sum(remove_comments(line) for line in f if line.strip())
        print(count)

不适用于多行注释。我设法通过使用正则表达式找到多行注释。这是代码,我能想到的唯一方法是使用re.sub()写回文件,然后进行计数。阅读时可以忽略正则表达式匹配吗?还是我要离开?

for file_name in find_files(d):
    with open(file_name,'r') as f:
        data = f.read()
        multiline_comments = re.findall(pattern,data,re.DOTALL)
        print(multiline_comments)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)