我有如下代码,它通过进行正则表达式替换来修改test.tex文件中的每一行。
唯一的问题是我只想应用替换到文件中的某些行,而且没有办法定义一个模式来选择正确的行。因此,我想显示每行并在命令行提示用户,询问是否在当前行进行替换。如果用户输入"y",则进行替换。如果用户什么也不输入,则不进行替换。
问题在于,通过使用
有什么好的想法吗?
import re
import fileinput
regex=re.compile(r'^([^&]*)(&)([^&]*)(&)([^&]*)')
for line in fileinput.input('test.tex',inplace=1):
print regex.sub(r'\3\2\1\4\5',line),
唯一的问题是我只想应用替换到文件中的某些行,而且没有办法定义一个模式来选择正确的行。因此,我想显示每行并在命令行提示用户,询问是否在当前行进行替换。如果用户输入"y",则进行替换。如果用户什么也不输入,则不进行替换。
问题在于,通过使用
inplace=1
代码,我有效地将stdout重定向到了打开的文件。因此,没有办法显示输出(例如询问是否进行替换)到不被发送到文件的命令行上。有什么好的想法吗?
fileinput
不是适合这个任务的正确工具。只需使用标准的读取-修改-写入模式即可。 - Eli Bendersky