我想用我想要的输出路径替换以某个表达式开头的每一行(例如:<Output>
)。我发现并开始使用python脚本,在一个文件中的每次出现时都将一个字符串替换为另一个字符串 - 例如:
text = open( path ).read()
if output_pattern in text:
open( path, 'w' ).write( text.replace( pattern, replace ) )
但是,我想将text.replace( pattern, replace )
替换为用pattern
替换包含replace
的整行的内容。我尝试了一些事情并且悲惨地失败了。
注意:我可以阅读但不完全写python ...
我的一次失败确实用线替换了模式。实际上,它只用替换模式替换了整个文件,因为它需要很多次...是的,因为我正在进行递归搜索(以前的尝试,用一个字符串替换另一个字符串,工作得很好,不好笑,所以我很勇敢,并将我的目标目录设置为我想要使用的根目录)
还有其他一些很好的例子,它们逐行读取并写入输出文件,然后将输出文件复制到输入文件中,但是我在执行此操作时出错。
我真的不想使用正则表达式,因为我可能想要搜索的模式(尤其是我想要替换的模式)(可能)包含许多特殊字符,包括反斜杠,但如果需要,可以对它们进行转义。 / p>
答案 0 :(得分:3)
如果行以replace
开头,则替换为pattern
的行:
text = open(path).read()
new_text = '\n'.join(replace if line.startswith(pattern) else line
for line in text.splitlines())
open(path, 'w').write(new_text)
或针对内存使用进行了优化,并使用with
语句,这更加惯用:
with open(input_path) as text, open(output_path, 'w') as new_text:
new_text.write(''.join(replace if line.startswith(pattern) else line
for line in text))
您需要确保replace
中包含换行符(\n
),以便后一个示例按您的预期工作。