删除文本文件中的注释

时间:2015-11-02 17:49:36

标签: python regex comments

我正在尝试使用Python代码和正则表达式从Python代码文件中的新行开始删除注释。例如,对于此输入:

first line

#description

hello my friend

我想得到这个输出:

first line
hello my friend

不幸的是,这段代码因某些原因无效:

with open(input_file,"r+") as f:
string = re.sub(re.compile(r'\n#.*'),"",f.read()))
f.seek(0)
f.write(string)

由于某种原因,我得到的输出与输入相同。

2 个答案:

答案 0 :(得分:0)

1)除非您保存结果,否则没有理由致电re.compile。您始终可以使用正则表达式文本。

2)如果替换文本比原始文本短,则寻找文件的开头并写入文件可能会导致问题。重新打开文件并写入数据更容易。

以下是我修复程序的方法:

import re
input_file = 'in.txt'
with open(input_file,"r") as f:
    data = f.read()

data = re.sub(r'\n#.*', "", data)

with open(input_file, "w") as f:
    f.write(data)

答案 1 :(得分:0)

使用\n启动正则表达式似乎不正确,我认为您不需要在此使用re.compile

除此之外,您还必须使用标记re.M在多行上进行搜索

这将删除以#开头的所有行和空行。

with open(input_file, "r+") as f:
    text = f.read()
    string = re.sub('^(#.*)|(\s*)$', '', text, flags=re.M)
    f.write(string)