我的实际代码是在一个新文件中写入来自正则表达式的数据。 最后,我得到了一个包含一些孤立行的新文件。
contract_data = []
with open('output/'+contract, "r") as f:
contents = f.read()
m = re.search("PAS_BEGIN_"+ contract_id +"([\S\s]*)PAS_END_"+ contract_id, contents)
if m:
contract_data.append(m.group())
with open('output/'+contract, 'w') as outfile:
for line in contract_data:
outfile.write(line)
我想做的是从文件中获取所有内容减去我从正则表达式中捕获的内容。
我已经阅读了 avec 反向正则表达式,但我想知道是否有更 pythonic 的方法来做到这一点。
感谢任何帮助
问候
请您参考如下方法:
您的代码有几处错误 - 对于初学者来说,如果您想逐行区分,您应该逐行读取和处理您的文件。此外,在关闭文件进行读取之前打开文件进行写入通常不是一个好主意。最后,您可以使用 re.sub() 删除与其匹配的部分,而不是反转您的模式。
因此:
with open("output/" + contract, "r") as f: # open for reading
contract_data = re.sub("PAS_BEGIN_" + contract_id + r"([\S\s]*)PAS_END_" + contract_id,
"", f.read())
with open("output/" + contract, "w") as f: # open for writing
f.write(contract_data)
